--- OSAS/OSA_system/OSAS_metadata.py 2004/04/05 21:54:42 1.5 +++ OSAS/OSA_system/OSAS_metadata.py 2005/11/29 13:54:50 1.11 @@ -5,8 +5,8 @@ import addFolder import OSAS_add # methods for adding metadata and/or files -from Globals import InitializeClass -from Globals import Persistent +from Globals import InitializeClass,Persistent,package_home + from OFS.Folder import Folder from OFS.SimpleItem import SimpleItem from Products.PageTemplates.PageTemplateFile import PageTemplateFile @@ -19,6 +19,7 @@ from OFS.PropertyManager import Property from ExtensionClass import Base from Acquisition import Implicit import string +import os from AccessControl import ClassSecurityInfo @@ -29,15 +30,16 @@ class OSAS_MetadataMapping(SimpleItem): def readFieldsFromParent(self): """read all elements from root""" + #print self.getId() return self.aq_parent.fieldList - def __init__(self,id,title,arglist): + def __init__(self,id,title,arglist,fieldList): """init""" self.id=id self.title=title self.fields=[] - for fieldName in self.readFieldsFromParent(): + for fieldName in fieldList: setattr(self,"md_"+fieldName,arglist[fieldName]) self.fields.append(arglist[fieldName]) @@ -45,25 +47,55 @@ class OSAS_MetadataMapping(SimpleItem): {'label':'Main Config','action':'change_OSAS_MappingForm'}, ) + + def showSetXML(self,RESPONSE=None): + """prints out the mapping as XML""" + ret=""""""%self.title + for fieldName in self.readFieldsFromParent(): + entry=getattr(self,"md_"+fieldName) + if entry[2]=="": # no explanation of this field + ret+=""""""%(fieldName,entry[0],entry[1]) + else: + ret+="""%s"""%(fieldName,entry[0],entry[1],entry[2]) + ret+="" + + if not RESPONSE: + return ret + else: + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + return ret + def getValue(self,fieldName): """get md value""" + try: return getattr(self,"md_"+fieldName) except: - return "" + return (None,None,None) + + def isEmptyValue(self,fieldName): + """empty""" + try: + field=getattr(self,"md_"+fieldName) + if field[1]=='': + return 0 + else: + return 1 + except: + return 0 def generateMappingHash(self): """erzeugen des Hash""" hash={} for field in self.fieldList: - hash[field]=getattr(self,"md_"+field) + hash[field]=getattr(self,"md_"+field,'') return hash def change_OSAS_MappingForm(self): """change""" - pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_MetadataMapping.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_MetadataMapping.zpt')).__of__(self) return pt() def change_OSAS_Mapping(self,titleOfObject,RESPONSE=None): @@ -76,7 +108,7 @@ class OSAS_MetadataMapping(SimpleItem): for fieldName in self.readFieldsFromParent(): - setattr(self,"md_"+fieldName,arglist[fieldName]) + setattr(self,"md_"+fieldName,(arglist[fieldName],arglist['label_'+fieldName],arglist['explanation_'+fieldName])) self.fields.append(arglist[fieldName]) if RESPONSE is not None: @@ -86,18 +118,18 @@ class OSAS_MetadataMapping(SimpleItem): def manage_addOSAS_MetadataMappingForm(self): """interface for adding the OSAS_root""" - pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_MetadataMapping.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_MetadataMapping.zpt')).__of__(self) return pt() def manage_addOSAS_MetadataMapping(self,idOfObject,titleOfObject,RESPONSE=None): """add the OSAS_root""" argList={} - for arg in self.REQUEST.form.keys(): + for arg in self.fieldList: if not (arg in ['idOfObject','titleOfObject']): - argList[arg]=self.REQUEST.form[arg] - - newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList) + argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg]) + + newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList,self.fieldList) self._setObject(idOfObject,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -122,7 +154,34 @@ class OSAS_add_Metadata(Folder): {'label':'Main Config','action':'add_Metadata_config'}, ) - + def showGenericXML(self,RESPONSE=None): + """show generic fields as XML""" + ret=""""""%"generic" + for field in self.fieldList: + ret+=""""""%field + + ret+="" + + if not RESPONSE: + return ret + else: + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + return ret + def showOverviewXML(self,RESPONSE): + """gives an overview over the Metadata stored in this folder""" + ret=""""""%self.getId() + ret+=self.showGenericXML() + for entry in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping']): + ret+=entry[1].showSetXML() + + ret+="" + + if not RESPONSE: + return ret + else: + self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') + return ret + def generateMappingList(self): """Erzeuge Mapping""" mapping={} @@ -189,7 +248,7 @@ class OSAS_add_Metadata(Folder): security.declarePublic('add_Metadata_config') def add_Metadata_config(self): """Main configuration""" - pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_addMetadata.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeOSAS_addMetadata.zpt')).__of__(self) return pt() security.declarePublic('change_OSAS_addMetadata') @@ -219,10 +278,13 @@ class OSAS_add_Metadata(Folder): def add6(self): """write new index.meta file""" return OSAS_add.add6(self) + + + def manage_AddOSAS_add_MetadataForm(self): """interface for adding the OSAS_add_Metadata""" - pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_metadata.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddOSAS_metadata.zpt')).__of__(self) return pt() def manage_AddOSAS_add_Metadata(self,id,linklabel,description,fields,RESPONSE=None):