degal/commands/main.py
changeset 87 a7a18893730d
parent 76 e22d9f699081
child 88 b1b0939517e7
child 94 676c1d201cfe
equal deleted inserted replaced
86:d9a981cc0806 87:a7a18893730d
     3 
     3 
     4 def render_image (ctx, image) :
     4 def render_image (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     
     8 
     9     # log image path
     9     # log image path
    10     ctx.log_info("%s", image)
    10     ctx.log_info("%s", image)
    11 
    11 
    12     # render output
    12     # render output
    13     tpl = templates.master(ctx.gallery, image.title, image.html, 
    13     tpl = templates.master(ctx.gallery, image.title, image.html, 
    15     )
    15     )
    16     
    16     
    17     # write output
    17     # write output
    18     tpl.render_file(image.html)
    18     tpl.render_file(image.html)
    19 
    19 
    20 def render_folder (ctx, folder) :
    20 def render_folder_page (ctx, folder) :
    21     """
    21     """
    22         Render the .html output for one folder, recursively
    22         Render the .html output for one folder
    23     """
    23     """
    24 
    24 
    25     # log folder path
    25     # render each page separately
    26     ctx.log_info("%s", folder)
       
    27 
       
    28     # render folder index
       
    29     for page in xrange(folder.page_count) :
    26     for page in xrange(folder.page_count) :
    30         # output .html page
    27         # output .html page
    31         html_file = folder.html_file(page)
    28         html_file = folder.html_file(page)
    32         
    29         
    33         # render template
    30         # render template
    35             templates.folder_page(folder, page)
    32             templates.folder_page(folder, page)
    36         )
    33         )
    37 
    34 
    38         # write output
    35         # write output
    39         tpl.render_file(html_file)
    36         tpl.render_file(html_file)
       
    37     
    40 
    38 
    41     # render images
    39 def render_folder (ctx, folder) :
    42     for image in folder.images :
    40     # index images that require updating
    43         render_image(ctx, image)
    41     image_count = len(folder.images)
       
    42     new_images = list(folder.index_images(for_update=(not ctx.config.force_update)))
       
    43     
       
    44     if new_images or ctx.config.force_update:
       
    45         # update folder index
       
    46         render_folder_page(ctx, folder)
       
    47         
       
    48         ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count)
       
    49 
       
    50         # update images
       
    51         for image in new_images :
       
    52             # update thumbs
       
    53             image.update()
       
    54             
       
    55             # render output
       
    56             render_image(ctx, image)
       
    57     
       
    58     else :
       
    59         ctx.log_info("%s - up to date", folder)
       
    60 
       
    61     # index subfolders
       
    62     for subfolder in folder.subfolders :
       
    63         render_folder(ctx, subfolder)
    44 
    64 
    45 @command
    65 @command
    46 def main (ctx) :
    66 def main (ctx) :
    47     """
    67     """
    48         Scan the gallery for new folders/images, and render updated ones
    68         Scan the gallery for new folders/images, and render updated ones