degal/commands/main.py
changeset 87 a7a18893730d
parent 76 e22d9f699081
child 88 b1b0939517e7
child 94 676c1d201cfe
--- a/degal/commands/main.py	Thu Jun 11 00:36:33 2009 +0300
+++ b/degal/commands/main.py	Thu Jun 11 00:37:01 2009 +0300
@@ -5,7 +5,7 @@
     """
         Render the thumbnails and .html for one image
     """
-    
+
     # log image path
     ctx.log_info("%s", image)
 
@@ -17,15 +17,12 @@
     # write output
     tpl.render_file(image.html)
 
-def render_folder (ctx, folder) :
+def render_folder_page (ctx, folder) :
     """
-        Render the .html output for one folder, recursively
+        Render the .html output for one folder
     """
 
-    # log folder path
-    ctx.log_info("%s", folder)
-
-    # render folder index
+    # render each page separately
     for page in xrange(folder.page_count) :
         # output .html page
         html_file = folder.html_file(page)
@@ -37,10 +34,33 @@
 
         # write output
         tpl.render_file(html_file)
+    
 
-    # render images
-    for image in folder.images :
-        render_image(ctx, image)
+def render_folder (ctx, folder) :
+    # index images that require updating
+    image_count = len(folder.images)
+    new_images = list(folder.index_images(for_update=(not ctx.config.force_update)))
+    
+    if new_images or ctx.config.force_update:
+        # update folder index
+        render_folder_page(ctx, folder)
+        
+        ctx.log_info("%s - render %d/%d images", folder, len(new_images), image_count)
+
+        # update images
+        for image in new_images :
+            # update thumbs
+            image.update()
+            
+            # render output
+            render_image(ctx, image)
+    
+    else :
+        ctx.log_info("%s - up to date", folder)
+
+    # index subfolders
+    for subfolder in folder.subfolders :
+        render_folder(ctx, subfolder)
 
 @command
 def main (ctx) :