Le « XMP packet wrapper » est optionnel. On ôte l’assertion qui la voulait coûte...
[Photo.git] / metadata.py
index 96a44aa..310392b 100755 (executable)
 #######################################################################################
 """ Photo metadata read / write module
 
 #######################################################################################
 """ Photo metadata read / write module
 
-$Id: metadata.py 1272 2009-08-11 08:57:35Z pin $
-$URL: http://svn.luxia.fr/svn/labo/projects/zope/Photo/trunk/metadata.py $
+
+
 """
 
 from AccessControl import ClassSecurityInfo
 """
 
 from AccessControl import ClassSecurityInfo
+from Acquisition import aq_base
 from Globals import InitializeClass
 from AccessControl.Permissions import view
 from ZODB.interfaces import BlobError
 from Globals import InitializeClass
 from AccessControl.Permissions import view
 from ZODB.interfaces import BlobError
@@ -70,7 +71,7 @@ class Metadata :
                        """returns xmp metadata packet with xmpdump call
                        """
                        if self.size :
                        """returns xmp metadata packet with xmpdump call
                        """
                        if self.size :
-                               blob_file_path = self.bdata._current_filename()
+                               blob_file_path = self.bdata._p_blob_uncommitted or self.bdata._p_blob_committed
                                dumpcmd = '%s %s' % (XMPDUMP, blob_file_path)
                                p = Popen(dumpcmd, stdout=PIPE, stderr=PIPE, stdin=PIPE, shell=True)
                                xmp, err = p.communicate()
                                dumpcmd = '%s %s' % (XMPDUMP, blob_file_path)
                                p = Popen(dumpcmd, stdout=PIPE, stderr=PIPE, stdin=PIPE, shell=True)
                                xmp, err = p.communicate()
@@ -136,9 +137,10 @@ class Metadata :
                        node = index.get(path)
 
                        if node :
                        node = index.get(path)
 
                        if node :
-                               firstLi = node['rdf:Alt/rdf:li']
-                               assert firstLi.unique, "More than one rdf:Alt (localisation not yet supported)"
-                               return firstLi.element.content
+                               firstLi = node.get('rdf:Alt/rdf:li')
+                               if firstLi :
+                                       assert firstLi.unique, "More than one rdf:Alt (localisation not yet supported)"
+                                       return firstLi.element.content
                return ''
 
        security.declarePrivate('getXmpProp')
                return ''
 
        security.declarePrivate('getXmpProp')
@@ -168,7 +170,7 @@ class Metadata :
                root = info['root']
                rdfType = info['rdfType'].capitalize()
                methName = 'getXmp%s' % rdfType
                root = info['root']
                rdfType = info['rdfType'].capitalize()
                methName = 'getXmp%s' % rdfType
-               meth = getattr(self.aq_base, methName)
+               meth = getattr(aq_base(self), methName)
                return meth(name, root)
        
        
                return meth(name, root)