--- ECHO_content/ECHO_collection.py 2005/10/28 13:25:01 1.244 +++ ECHO_content/ECHO_collection.py 2005/10/28 17:49:45 1.245 @@ -1038,7 +1038,29 @@ class ECHO_resource(CatalogAware,Folder, RESPONSE.redirect('manage_main') - def getMDValue(self,fieldName,empty=None): + def getMDValue(self,fieldNameTest,empty=None,generic=None): + """get md values""" + #TODO: cache mappinghash + + fieldName=None + if generic: + ct=self.contentType.replace(" ","_").lower() + + #caching + if not hasattr(self,'_v_mapHash'): #noch keine cachevariable + self._v_mapHash={} + + tmp=self._v_mapHash.get(ct,None) + if tmp: #teste ob type schon existiert + fieldName=tmp.get(fieldNameTest,None) + else: + self._v_mapHash[ct]={} + + #noch nicht gecached + if not fieldName and hasattr(self.standardMD,ct): + fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] + self._v_mapHash[ct][fieldNameTest]=fieldName + if not empty: return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) @@ -1153,20 +1175,6 @@ class ECHO_resource(CatalogAware,Folder, return field - - def getFieldValue(self,field): - """get value""" - - try: - - ret=self.metaDataHash[field] - if ret == "": - return None - else: - - return ret - except: - return None def getMetaDataHash(self): """md hash""" @@ -1174,6 +1182,7 @@ class ECHO_resource(CatalogAware,Folder, def setFieldValue(self,field,value): """get value""" + #TODO: remove setFieldValue if not hasattr(self,'metaDataHash'): setattr(self,'metaDataHash',{}) @@ -1183,8 +1192,9 @@ class ECHO_resource(CatalogAware,Folder, def copySearchFields(self): """copys metadatafields to the object""" fields=['author','title','year'] + for field in fields: - setattr(self,'MD_'+field,self.getFieldValue(field)) + setattr(self,'MD_'+field,self.getMDValue(field,generic="yes")) def findLabelsFromMapping(self,referenceType): @@ -1235,9 +1245,7 @@ class ECHO_resource(CatalogAware,Folder, #self.referencetypes=temp[0:] - - - + bibdata={} retdata={} @@ -1288,6 +1296,8 @@ class ECHO_resource(CatalogAware,Folder, if RESPONSE: return RESPONSE.redirect('manage_main') + return "OK:",self.absolute_url().self,contentType + def ECHO_getResourceMD(self,template="yes",back=None): """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" (metadict, error)=readMetadata(self.metalink) @@ -1914,7 +1924,7 @@ class ECHO_collection(Folder, Persistent def copySearchFields(self,RESPONSE=None): """copys import metadatafields to the object""" - resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) + resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) for resource in resources: @@ -1932,7 +1942,7 @@ class ECHO_collection(Folder, Persistent def reloadMetaDataFromStorage(self,RESPONSE=None): """copy metadata from the storage to ECHO""" - return reloadMetaDataFromStorage(self,RESPONSE=None) + return reloadMetaDataFromStorage(self,RESPONSE) def getPartnerCopyright(self,name,sonst="generic"):