3 |
3 |
4 def render_image_html (ctx, image) : |
4 def render_image_html (ctx, image) : |
5 """ |
5 """ |
6 Render the thumbnails and .html for one image |
6 Render the thumbnails and .html for one image |
7 """ |
7 """ |
|
8 |
|
9 ctx.log_debug("%s", image.html) |
8 |
10 |
9 # render output |
11 # render output |
10 tpl = templates.master(ctx.gallery, image.title, image.html, |
12 tpl = templates.master(ctx.gallery, image.title, image.html, |
11 templates.image_page(image) |
13 templates.image_page(image) |
12 ) |
14 ) |
19 Render the thubmnails for the given image |
21 Render the thubmnails for the given image |
20 """ |
22 """ |
21 |
23 |
22 image.update() |
24 image.update() |
23 |
25 |
24 def render_folder_images (ctx, images) : |
26 def render_folder_images (ctx, images, for_update=True) : |
25 """ |
27 """ |
26 Render the given series of images |
28 Render the given series of images |
27 """ |
29 """ |
28 |
30 |
29 # render them in parallel as required |
31 # render them in parallel as required |
30 for image in images : |
32 for image in images : |
31 # log image path |
33 # log image path |
32 ctx.log_info("%s", image) |
34 ctx.log_info("%s", image) |
33 |
35 |
34 # render output thumbs |
36 # only test if not already filtered for update |
35 render_image_thumbs(image) |
37 if for_update or image.stale() : |
|
38 # render output thumbs |
|
39 render_image_thumbs(image) |
36 |
40 |
37 # render HTML |
41 # render HTML |
38 render_image_html(ctx, image) |
42 render_image_html(ctx, image) |
|
43 |
|
44 # release large objects that are not needed anymore |
|
45 # XXX: verify that this works |
|
46 del image.pil_image |
39 |
47 |
40 def render_folder_page (ctx, folder) : |
48 def render_folder_page (ctx, folder) : |
41 """ |
49 """ |
42 Render the .html output for one folder |
50 Render the .html output for one folder |
43 """ |
51 """ |
44 |
52 |
45 # render each page separately |
53 # render each page separately |
46 for page in xrange(folder.page_count) : |
54 for page in xrange(folder.page_count) : |
47 # output .html page |
55 # output .html page |
48 html_file = folder.html_file(page) |
56 html_file = folder.html_file(page) |
|
57 |
|
58 ctx.log_debug("%s", html_file) |
49 |
59 |
50 # render template |
60 # render template |
51 tpl = templates.master(ctx.gallery, folder.title, html_file, |
61 tpl = templates.master(ctx.gallery, folder.title, html_file, |
52 templates.folder_page(folder, page) |
62 templates.folder_page(folder, page) |
53 ) |
63 ) |
57 |
67 |
58 def render_folder (ctx, folder) : |
68 def render_folder (ctx, folder) : |
59 """ |
69 """ |
60 Render the HTML/images for this folder if needed, and recrurse into subfolders. |
70 Render the HTML/images for this folder if needed, and recrurse into subfolders. |
61 """ |
71 """ |
|
72 |
|
73 if ctx.config.force_html or ctx.config.force_thumb : |
|
74 # index all |
|
75 for_update = False |
62 |
76 |
63 # index images that require updating |
77 else : |
|
78 # only new images |
|
79 for_update = True |
|
80 |
|
81 # full count of images |
64 image_count = len(folder.images) |
82 image_count = len(folder.images) |
65 new_images = list(folder.index_images(for_update=(not ctx.config.force_update))) |
83 |
66 |
84 # index selected images |
67 if new_images or ctx.config.force_update: |
85 new_images = list(folder.index_images(for_update=for_update)) |
|
86 |
|
87 if new_images or ctx.config.force_html : |
68 # update folder index |
88 # update folder index |
69 render_folder_page(ctx, folder) |
89 render_folder_page(ctx, folder) |
70 |
90 |
71 ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count) |
91 ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count) |
72 |
92 |
73 # update images |
93 # update images |
74 render_folder_images(ctx, new_images) |
94 render_folder_images(ctx, new_images, for_update) |
75 |
95 |
76 else : |
96 else : |
77 ctx.log_info("%s - up to date", folder) |
97 ctx.log_info("%s - up to date", folder) |
78 |
98 |
79 # index subfolders |
99 # index subfolders |