← Back to team overview

phatch-dev team mailing list archive

[Bug 384974] Re: Error dialog buttons don't behave properly when flushing metadata

 

Very good bug report, thanks! Luckily it was only for metadata saving,
not for regular actions.

$ bzr diff
=== modified file 'phatch/core/api.py'
--- phatch/core/api.py	2009-06-08 18:55:29 +0000
+++ phatch/core/api.py	2009-06-09 14:43:36 +0000
@@ -291,8 +291,14 @@
 def flush_metadata(photo,image_file,result):
     try:
         photo.flush_metadata()
+        result['skip']  = False
+        result['abort'] = False
+        #log non fatal errors/warnings
+        flush_log(photo, image_file)
+        return photo, result
     except Exception, details:
-        folder, image  = os.path.split(ensure_unicode(image_file))
+        photo.metadata  = {}
+        folder, image   = os.path.split(ensure_unicode(image_file))
         reason  = exception_to_unicode(details)
         message = u'%s\n%s\n\n%s'%(
             _("Can not write metadata to image '%s' in folder:")%image,
@@ -301,7 +307,6 @@
         )
         return process_error(photo,message,image_file,action=None,
             result=result,ignore=True)
-    flush_log(photo, image_file)
     
     
 def apply_action(action,photo,setting,cache,image_file,result):
@@ -321,8 +326,8 @@
             folder,
             reason,
         )
-        ignore  = True
-        return process_error(photo,message,image_file,action,result,ignore)
+        return process_error(photo,message,image_file,action,
+            result,ignore=True)
     
 def apply_actions(actions,settings,paths=None,drop=False):
     """Do all the actions."""
@@ -407,7 +412,10 @@
         #do the actions
         for action_index, action in enumerate(actions):
             if action.flush_metadata_before:
-                flush_metadata(photo,image_file,result)
+                photo, result  = flush_metadata(photo,image_file,result)
+                if      result['abort']: return
+                elif    result['skip']:
+                    break
             #update progress
             progress_result = {}
             send.progress_update_index(progress_result,image_index,action_index)
@@ -421,9 +429,9 @@
             if      result['abort']: return
             elif    result['skip']:
                 break
-        flush_metadata(photo,image_file,result)
-        flush_log(photo, image_file, action)
+        photo, result  = flush_metadata(photo,image_file,result)
         del photo, progress_result, action_index, action
+        if      result['abort']: return
     send.progress_close()
     #mention amount of photos and duration
     delta       = time.time()-start

=== modified file 'phatch/core/lib/_pyexiv2.py'
--- phatch/core/lib/_pyexiv2.py	2009-06-09 13:56:09 +0000
+++ phatch/core/lib/_pyexiv2.py	2009-06-09 14:02:24 +0000
@@ -145,7 +145,7 @@
     if ext:
         format = ext.upper()
     if (format and not(format in WRITE_EXIF+WRITE_IPTC)):
-        return 'pyexiv2: writing metadata to %s is not supported'%format
+        raise Exception('pyexiv2: writing metadata to %s is not supported'%format)
     image       = pyexiv2.Image(path)
     image.readMetadata()
     warnings    = []

=== modified file 'phatch/core/pil.py'
--- phatch/core/pil.py	2009-06-09 04:21:16 +0000
+++ phatch/core/pil.py	2009-06-09 13:58:48 +0000
@@ -434,7 +434,8 @@
         #throw an error if pyexiv2 is not installed
         if not exif:
             raise ImportError(NEEDS_PYEXIV2)
-        self.log += exif.flush(self.info['path'],self.metadata)
+        self.log += exif.flush(self.info['path'],self.metadata,
+            self.info['Pil.Format'])
         #as metadata has changed, use new source
         self.metadata       = {}

$ bzr commit -m "fixing error dialog buttons for metadata"
Committing to: /home/stani/sync/python/phatch/trunk/                           
modified phatch/core/api.py
modified phatch/core/pil.py
modified phatch/core/lib/_pyexiv2.py
Committed revision 709.                 

** Summary changed:

- Error dialog buttons don't behave properly
+ Error dialog buttons don't behave properly when flushing metadata

** Changed in: phatch
       Status: In Progress => Fix Committed

-- 
Error dialog buttons don't behave properly when flushing metadata
https://bugs.launchpad.net/bugs/384974
You received this bug notification because you are a member of Phatch
Developers, which is subscribed to Phatch.

Status in Phatch = Photo & Batch!: Fix Committed

Bug description:
One more thing. After the error the execution is aborted even if I select 'Skip to Next image' and there are hundreds of other images to process.



References