78 tpl.render_file(html) |
78 tpl.render_file(html) |
79 |
79 |
80 def render_folder (ctx, folder) : |
80 def render_folder (ctx, folder) : |
81 """ |
81 """ |
82 Render the HTML/images for this folder if needed, and recrurse into subfolders. |
82 Render the HTML/images for this folder if needed, and recrurse into subfolders. |
|
83 |
|
84 Returns True if any sub-images were found, False if this folder and all subfolders were completely empty and no |
|
85 HTML was generated. |
|
86 |
|
87 XXX: this logic is too complicated for one function. For one module? |
83 """ |
88 """ |
|
89 |
|
90 # flag to track if we've rendered any contents. |
|
91 empty = True |
84 |
92 |
85 if ctx.config.force_html or ctx.config.force_thumb : |
93 if ctx.config.force_html or ctx.config.force_thumb : |
86 # index all |
94 # index all |
87 for_update = False |
95 for_update = False |
88 |
96 |
94 image_count = len(folder.images) |
102 image_count = len(folder.images) |
95 |
103 |
96 # index selected images |
104 # index selected images |
97 new_images = list(folder.index_images(for_update=for_update)) |
105 new_images = list(folder.index_images(for_update=for_update)) |
98 |
106 |
99 if new_images or ctx.config.force_html : |
107 # index subfolders |
|
108 for subfolder in folder.subfolders : |
|
109 if render_folder(ctx, subfolder) : |
|
110 # positive assertion |
|
111 empty = False |
|
112 |
|
113 if folder.images : |
|
114 empty = False |
|
115 |
|
116 # only render HTML if needed |
|
117 if not empty : |
100 # update folder index |
118 # update folder index |
101 render_folder_html(ctx, folder) |
119 render_folder_html(ctx, folder) |
102 |
120 |
|
121 # only render new images if needed |
|
122 if new_images or ctx.config.force_html : |
103 ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count) |
123 ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count) |
104 |
124 |
105 # update images |
125 # update images |
106 render_folder_images(ctx, new_images, for_update) |
126 render_folder_images(ctx, new_images, for_update) |
107 |
127 |
108 else : |
128 else : |
109 ctx.log_info("%s - up to date", folder) |
129 ctx.log_info("%s - up to date", folder) |
110 |
130 |
111 # index subfolders |
131 # return flag |
112 for subfolder in folder.subfolders : |
132 return empty |
113 render_folder(ctx, subfolder) |
|
114 |
133 |
115 @command |
134 @command |
116 def main (ctx) : |
135 def main (ctx) : |
117 """ |
136 """ |
118 Scan the gallery for new folders/images, and render updated ones |
137 Scan the gallery for new folders/images, and render updated ones |