--- OSAS/OSA_system/OSAS_metadata.py 2004/03/03 13:02:54 1.4 +++ OSAS/OSA_system/OSAS_metadata.py 2004/04/05 21:54:42 1.5 @@ -18,20 +18,103 @@ from Shared.DC.Scripts.Script import Scr from OFS.PropertyManager import PropertyManager from ExtensionClass import Base from Acquisition import Implicit - +import string from AccessControl import ClassSecurityInfo +class OSAS_MetadataMapping(SimpleItem): + """Einfaches Mapping Object""" + + meta_type="OSAS_MetadataMapping" + + def readFieldsFromParent(self): + """read all elements from root""" + return self.aq_parent.fieldList + + def __init__(self,id,title,arglist): + """init""" + self.id=id + self.title=title + self.fields=[] + + for fieldName in self.readFieldsFromParent(): + setattr(self,"md_"+fieldName,arglist[fieldName]) + self.fields.append(arglist[fieldName]) + + manage_options = SimpleItem.manage_options+( + {'label':'Main Config','action':'change_OSAS_MappingForm'}, + ) + + def getValue(self,fieldName): + """get md value""" + try: + return getattr(self,"md_"+fieldName) + except: + return "" + + def generateMappingHash(self): + """erzeugen des Hash""" + hash={} + for field in self.fieldList: + 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) + return pt() + + def change_OSAS_Mapping(self,titleOfObject,RESPONSE=None): + """change""" + + self.title=titleOfObject + arglist=self.REQUEST.form + self.fields=[] + + + for fieldName in self.readFieldsFromParent(): + + setattr(self,"md_"+fieldName,arglist[fieldName]) + self.fields.append(arglist[fieldName]) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + + +def manage_addOSAS_MetadataMappingForm(self): + """interface for adding the OSAS_root""" + pt=PageTemplateFile('Products/OSA_system/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(): + if not (arg in ['idOfObject','titleOfObject']): + argList[arg]=self.REQUEST.form[arg] + + newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList) + self._setObject(idOfObject,newObj) + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + + class OSAS_add_Metadata(Folder): """Foldertype enthält methoden zur Halbautomatischen Erstellung von Metadatenfiles""" security=ClassSecurityInfo() - def __init__(self,id,linklabel,description): + def __init__(self,id,linklabel,description,fields): """initialize a new instance""" self.id = id self.linklabel =linklabel #label fuer link auf add page self.description=description #description of the method for link page + self.fieldList=fields.split(",")[0:] meta_type='OSAS_add_Metadata' @@ -40,6 +123,68 @@ class OSAS_add_Metadata(Folder): ) + def generateMappingList(self): + """Erzeuge Mapping""" + mapping={} + for dict in self.__dict__: + #print dict + obj=getattr(self,dict) + if hasattr(obj,'meta_type'): + if obj.meta_type=="OSAS_MetadataMapping": + mapping[obj.getId()]=obj.generateMappingHash() + return mapping + + def generateMappingForType(self,type,clean="yes"): + """erzeuge spezifisches Mapping""" + hash=self.generateMappingList() + if hash.has_key(type): + if clean=="yes": + temp={} + for x in hash[type].keys(): + if not hash[type][x]=="": + temp[x]=hash[type][x] + return temp + else: + return hash[type] + + else: + return {} + + def getFieldList(self): + """erzeuge string aus fields""" + try: + return string.join(self.fieldList,",") + except: + return "" + + def getFields(self): + """ausgabe der Felder""" + return self.fieldList + + def getTypeTitle(self,id): + """Title von ID""" + try: + obj=getattr(self,id) + return obj.title + except: + return id + + def getStoredTypes(self): + """Gebe gespeicherte typen zurück""" + + types=[] + for dict in self.__dict__: + + obj=getattr(self,dict) + if hasattr(obj,'meta_type'): + if obj.meta_type=="OSAS_MetadataMapping": + #print obj + if obj.title=="": + title=obj.id + else: + title=obj.title + types.append((obj.id,title)) + return types security.declarePublic('add_Metadata_config') def add_Metadata_config(self): @@ -48,17 +193,17 @@ class OSAS_add_Metadata(Folder): return pt() security.declarePublic('change_OSAS_addMetadata') - def change_OSAS_addMetadata(self,linklabel,description,RESPONSE=None): + def change_OSAS_addMetadata(self,linklabel,description,fields,RESPONSE=None): """Change Metadata""" self.linklabel=linklabel self.description=description - + self.fieldList=fields.split(",")[0:] if RESPONSE is not None: RESPONSE.redirect('manage_main') security.declarePublic('index_html') def index_html(self): - """stantard aufruf""" + """standard aufruf""" return OSAS_add.add(self,no_upload=0) @@ -80,9 +225,9 @@ def manage_AddOSAS_add_MetadataForm(self pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_metadata.zpt').__of__(self) return pt() -def manage_AddOSAS_add_Metadata(self,id,linklabel,description,RESPONSE=None): +def manage_AddOSAS_add_Metadata(self,id,linklabel,description,fields,RESPONSE=None): """add the OSAS_root""" - newObj=OSAS_add_Metadata(id,linklabel,description) + newObj=OSAS_add_Metadata(id,linklabel,description,fields) self.Destination()._setObject(id,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main')