Rewrite tag_export.easybake as a generator.
This commit is contained in:
		
							parent
							
								
									c278f3e0af
								
							
						
					
					
						commit
						90e7f6b6e1
					
				
					 3 changed files with 13 additions and 12 deletions
				
			
		|  | @ -6,6 +6,7 @@ import random | ||||||
| import sqlite3 | import sqlite3 | ||||||
| import tempfile | import tempfile | ||||||
| import time | import time | ||||||
|  | import types | ||||||
| 
 | 
 | ||||||
| from voussoirkit import cacheclass | from voussoirkit import cacheclass | ||||||
| from voussoirkit import configlayers | from voussoirkit import configlayers | ||||||
|  | @ -268,6 +269,8 @@ class PDBCacheManagerMixin: | ||||||
|             return exp |             return exp | ||||||
|         except KeyError: |         except KeyError: | ||||||
|             exp = function(**kwargs) |             exp = function(**kwargs) | ||||||
|  |             if isinstance(exp, types.GeneratorType): | ||||||
|  |                 exp = tuple(exp) | ||||||
|             self.caches['tag_exports'][key] = exp |             self.caches['tag_exports'][key] = exp | ||||||
|             return exp |             return exp | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -12,19 +12,20 @@ def easybake(tags, include_synonyms=True, with_objects=False): | ||||||
|     people.family.mother |     people.family.mother | ||||||
|     people.family.mother+mom |     people.family.mother+mom | ||||||
|     ''' |     ''' | ||||||
|     lines = [] |     tags = sorted(tags) | ||||||
|     for tag in tags: |     for tag in tags: | ||||||
|         if with_objects: |         if with_objects: | ||||||
|             my_line = (tag.name, tag) |             my_line = (tag.name, tag) | ||||||
|         else: |         else: | ||||||
|             my_line = tag.name |             my_line = tag.name | ||||||
|         lines.append(my_line) | 
 | ||||||
|  |         yield my_line | ||||||
| 
 | 
 | ||||||
|         if include_synonyms: |         if include_synonyms: | ||||||
|             syn_lines = [f'{tag.name}+{syn}' for syn in tag.get_synonyms()] |             syn_lines = [f'{tag.name}+{syn}' for syn in sorted(tag.get_synonyms())] | ||||||
|             if with_objects: |             if with_objects: | ||||||
|                 syn_lines = [(line, tag) for line in syn_lines] |                 syn_lines = [(line, tag) for line in syn_lines] | ||||||
|             lines.extend(syn_lines) |             yield from syn_lines | ||||||
| 
 | 
 | ||||||
|         child_lines = easybake( |         child_lines = easybake( | ||||||
|             tag.get_children(), |             tag.get_children(), | ||||||
|  | @ -32,13 +33,10 @@ def easybake(tags, include_synonyms=True, with_objects=False): | ||||||
|             with_objects=with_objects, |             with_objects=with_objects, | ||||||
|         ) |         ) | ||||||
|         if with_objects: |         if with_objects: | ||||||
|             child_lines = [(f'{tag.name}.{line[0]}', line[1]) for line in child_lines] |             child_lines = ((f'{tag.name}.{line[0]}', line[1]) for line in child_lines) | ||||||
|         else: |         else: | ||||||
|             child_lines = [f'{tag.name}.{line}' for line in child_lines] |             child_lines = (f'{tag.name}.{line}' for line in child_lines) | ||||||
|         lines.extend(child_lines) |         yield from child_lines | ||||||
| 
 |  | ||||||
|     lines.sort() |  | ||||||
|     return lines |  | ||||||
| 
 | 
 | ||||||
| def flat_dict(tags, include_synonyms=True): | def flat_dict(tags, include_synonyms=True): | ||||||
|     ''' |     ''' | ||||||
|  |  | ||||||
|  | @ -93,12 +93,12 @@ def get_tags_html(specific_tag_name=None): | ||||||
|         tags = [specific_tag] |         tags = [specific_tag] | ||||||
|         tag_count = sum(1 for child in specific_tag.walk_children()) |         tag_count = sum(1 for child in specific_tag.walk_children()) | ||||||
| 
 | 
 | ||||||
|     tags = list(common.P.get_cached_tag_export( |     tags = common.P.get_cached_tag_export( | ||||||
|         'easybake', |         'easybake', | ||||||
|         tags=tags, |         tags=tags, | ||||||
|         include_synonyms=False, |         include_synonyms=False, | ||||||
|         with_objects=True, |         with_objects=True, | ||||||
|     )) |     ) | ||||||
| 
 | 
 | ||||||
|     response = common.render_template( |     response = common.render_template( | ||||||
|         request, |         request, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue