diff -r 94888270dae0 -r 7021d949222c degal/commands/main.py --- a/degal/commands/main.py Wed Jun 17 16:45:01 2009 +0300 +++ b/degal/commands/main.py Wed Jun 17 17:02:24 2009 +0300 @@ -80,7 +80,15 @@ def render_folder (ctx, folder) : """ Render the HTML/images for this folder if needed, and recrurse into subfolders. + + Returns True if any sub-images were found, False if this folder and all subfolders were completely empty and no + HTML was generated. + + XXX: this logic is too complicated for one function. For one module? """ + + # flag to track if we've rendered any contents. + empty = True if ctx.config.force_html or ctx.config.force_thumb : # index all @@ -96,21 +104,32 @@ # index selected images new_images = list(folder.index_images(for_update=for_update)) - if new_images or ctx.config.force_html : + # index subfolders + for subfolder in folder.subfolders : + if render_folder(ctx, subfolder) : + # positive assertion + empty = False + + if folder.images : + empty = False + + # only render HTML if needed + if not empty : # update folder index render_folder_html(ctx, folder) - + + # only render new images if needed + if new_images or ctx.config.force_html : ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count) # update images render_folder_images(ctx, new_images, for_update) - + else : ctx.log_info("%s - up to date", folder) - - # index subfolders - for subfolder in folder.subfolders : - render_folder(ctx, subfolder) + + # return flag + return empty @command def main (ctx) :