degal/commands/main.py
changeset 101 698dc68a985d
parent 94 676c1d201cfe
child 113 3e0bbacc917e
equal deleted inserted replaced
100:0a093efd410d 101:698dc68a985d
     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