degal/commands/main.py
changeset 131 7021d949222c
parent 123 31c4a328ef96
child 132 c2b2f4b6fe6d
equal deleted inserted replaced
130:94888270dae0 131:7021d949222c
    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