Annotation of OSAS/OSA_system/OSAS_metadata.py, revision 1.8

1.1       dwinter     1: # Classen zur Produktion von Metataden
                      2: 
                      3: # Classes for displaying, browsing and organizing the archive
                      4: 
                      5: import addFolder
                      6: import OSAS_add # methods for adding metadata and/or files
                      7: 
                      8: from Globals import InitializeClass
                      9: from Globals import Persistent
                     10: from OFS.Folder import Folder
                     11: from OFS.SimpleItem import SimpleItem
                     12: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                     13: from Products.PageTemplates.PageTemplate import PageTemplate
                     14: from OFS.Traversable import Traversable
                     15: from OFS.Cache import Cacheable
                     16: from OFS.History import Historical, html_diff
                     17: from Shared.DC.Scripts.Script import Script, BindingsUI
                     18: from OFS.PropertyManager import PropertyManager
                     19: from ExtensionClass import Base
                     20: from Acquisition import Implicit
1.5       dwinter    21: import string
                     22: from AccessControl import ClassSecurityInfo
                     23: 
                     24: 
                     25: class OSAS_MetadataMapping(SimpleItem):
                     26:     """Einfaches Mapping Object"""
                     27: 
                     28:     meta_type="OSAS_MetadataMapping"
                     29: 
                     30:     def readFieldsFromParent(self):
                     31:         """read all elements from root"""
1.6       dwinter    32:         #print self.getId()
1.5       dwinter    33:         return self.aq_parent.fieldList
                     34:     
1.6       dwinter    35:     def __init__(self,id,title,arglist,fieldList):
1.5       dwinter    36:         """init"""
                     37:         self.id=id
                     38:         self.title=title
                     39:         self.fields=[]
                     40:         
1.6       dwinter    41:         for fieldName in fieldList:
1.5       dwinter    42:             setattr(self,"md_"+fieldName,arglist[fieldName])
                     43:             self.fields.append(arglist[fieldName])
                     44:             
                     45:     manage_options = SimpleItem.manage_options+(
                     46:         {'label':'Main Config','action':'change_OSAS_MappingForm'},
                     47:         )
                     48: 
                     49:     def getValue(self,fieldName):
                     50:         """get md value"""
1.7       dwinter    51: 
1.5       dwinter    52:         try:
                     53:             return getattr(self,"md_"+fieldName)
                     54:         except:
1.7       dwinter    55:             return (None,None,None)
1.8     ! dwinter    56: 
        !            57:     def isEmptyValue(self,fieldName):
        !            58:         """empty"""
        !            59:         try:
        !            60:             field=getattr(self,"md_"+fieldName)
        !            61:             if field[1]=='':
        !            62:                 return 0
        !            63:             else:
        !            64:                 return 1
        !            65:         except:
        !            66:             return 0
1.5       dwinter    67:         
                     68:     def generateMappingHash(self):
                     69:         """erzeugen des Hash"""
                     70:         hash={}
                     71:         for field in self.fieldList:
                     72:             hash[field]=getattr(self,"md_"+field)
                     73:         return hash
                     74: 
                     75:        
                     76:     
                     77:     def change_OSAS_MappingForm(self):
                     78:         """change"""
                     79:         pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_MetadataMapping.zpt').__of__(self)
                     80:         return pt()
                     81:     
                     82:     def change_OSAS_Mapping(self,titleOfObject,RESPONSE=None):
                     83:         """change"""
1.1       dwinter    84: 
1.5       dwinter    85:         self.title=titleOfObject
                     86:         arglist=self.REQUEST.form
                     87:         self.fields=[]
                     88:         
                     89:         
                     90:         for fieldName in self.readFieldsFromParent():
                     91: 
1.6       dwinter    92:             setattr(self,"md_"+fieldName,(arglist[fieldName],arglist['label_'+fieldName],arglist['explanation_'+fieldName]))
1.5       dwinter    93:             self.fields.append(arglist[fieldName])
                     94:             
                     95:         if RESPONSE is not None:
                     96:             RESPONSE.redirect('manage_main')
                     97: 
                     98:     
                     99: 
                    100: def manage_addOSAS_MetadataMappingForm(self):
                    101:     """interface for adding the OSAS_root"""
                    102:     pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_MetadataMapping.zpt').__of__(self)
                    103:     return pt()
                    104: 
                    105: def manage_addOSAS_MetadataMapping(self,idOfObject,titleOfObject,RESPONSE=None):
                    106:     """add the OSAS_root"""
                    107:     
                    108:     argList={}
1.6       dwinter   109:     for arg in self.fieldList:
1.5       dwinter   110:         if not (arg in ['idOfObject','titleOfObject']):
1.6       dwinter   111:             argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg])
                    112:             
                    113:     newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList,self.fieldList)
1.5       dwinter   114:     self._setObject(idOfObject,newObj)
                    115:     if RESPONSE is not None:
                    116:         RESPONSE.redirect('manage_main')
1.1       dwinter   117: 
1.5       dwinter   118:    
1.1       dwinter   119: 
                    120: 
                    121: class OSAS_add_Metadata(Folder):
                    122:     """Foldertype enthält methoden zur Halbautomatischen Erstellung von Metadatenfiles"""
                    123:     security=ClassSecurityInfo()
                    124:     
1.5       dwinter   125:     def __init__(self,id,linklabel,description,fields):
1.1       dwinter   126:         """initialize a new instance"""
                    127:         self.id = id
                    128:         self.linklabel =linklabel #label fuer link auf add page
                    129:         self.description=description #description of the method for link page
1.5       dwinter   130:         self.fieldList=fields.split(",")[0:]
1.1       dwinter   131:         
                    132:     meta_type='OSAS_add_Metadata'
                    133: 
                    134:     manage_options = Folder.manage_options+(
                    135:         {'label':'Main Config','action':'add_Metadata_config'},
                    136:         )
                    137: 
                    138:     
1.5       dwinter   139:     def generateMappingList(self):
                    140:         """Erzeuge Mapping"""
                    141:         mapping={}
                    142:         for dict in self.__dict__:
                    143:             #print dict
                    144:             obj=getattr(self,dict)
                    145:             if hasattr(obj,'meta_type'):
                    146:                 if obj.meta_type=="OSAS_MetadataMapping":
                    147:                     mapping[obj.getId()]=obj.generateMappingHash()
                    148:         return mapping
                    149:     
                    150:     def generateMappingForType(self,type,clean="yes"):
                    151:         """erzeuge spezifisches Mapping"""
                    152:         hash=self.generateMappingList()
                    153:         if hash.has_key(type):
                    154:             if clean=="yes":
                    155:                 temp={}
                    156:                 for x in hash[type].keys():
                    157:                     if not hash[type][x]=="":
                    158:                         temp[x]=hash[type][x]
                    159:                 return temp
                    160:             else:
                    161:                 return hash[type]
                    162:         
                    163:         else:
                    164:             return {}
                    165: 
                    166:     def getFieldList(self):
                    167:         """erzeuge string aus fields"""
                    168:         try:
                    169:             return string.join(self.fieldList,",")
                    170:         except:
                    171:             return ""
                    172:         
                    173:     def getFields(self):
                    174:         """ausgabe der Felder"""
                    175:         return self.fieldList
                    176: 
                    177:     def getTypeTitle(self,id):
                    178:         """Title von ID"""
                    179:         try:
                    180:             obj=getattr(self,id)
                    181:             return obj.title
                    182:         except:
                    183:             return id
                    184:         
                    185:     def getStoredTypes(self):
                    186:         """Gebe gespeicherte typen zurück"""
                    187:         
                    188:         types=[]
                    189:         for dict in self.__dict__:
                    190:             
                    191:             obj=getattr(self,dict)
                    192:             if hasattr(obj,'meta_type'):
                    193:                 if obj.meta_type=="OSAS_MetadataMapping":
                    194:                     #print obj
                    195:                     if obj.title=="":
                    196:                         title=obj.id
                    197:                     else:
                    198:                         title=obj.title
                    199:                     types.append((obj.id,title))
                    200:         return types
1.1       dwinter   201:     
                    202:     security.declarePublic('add_Metadata_config')
                    203:     def add_Metadata_config(self):
                    204:         """Main configuration"""
1.4       dwinter   205:         pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_addMetadata.zpt').__of__(self)
1.1       dwinter   206:         return pt()
                    207:     
1.3       dwinter   208:     security.declarePublic('change_OSAS_addMetadata')
1.5       dwinter   209:     def change_OSAS_addMetadata(self,linklabel,description,fields,RESPONSE=None):
1.1       dwinter   210:         """Change Metadata"""
1.3       dwinter   211:         self.linklabel=linklabel
                    212:         self.description=description
1.5       dwinter   213:         self.fieldList=fields.split(",")[0:]
1.1       dwinter   214:         if RESPONSE is not None:
                    215:             RESPONSE.redirect('manage_main')
                    216: 
                    217:     security.declarePublic('index_html')
                    218:     def index_html(self):
1.5       dwinter   219:         """standard aufruf"""
1.1       dwinter   220:         return OSAS_add.add(self,no_upload=0)
                    221: 
                    222: 
                    223:     security.declarePublic('add2')
                    224:     def add2(self):
                    225:         """ anlegen naechster schritt"""
                    226:         return OSAS_add.add2(self)
                    227: 
                    228:     def add3(self):
                    229:         """Foldername"""
                    230:         return OSAS_add.add3(self)
                    231: 
                    232:     def add6(self):
                    233:         """write new index.meta file"""
                    234:         return OSAS_add.add6(self)
1.6       dwinter   235: 
                    236:         
                    237:   
1.1       dwinter   238:     
                    239: def manage_AddOSAS_add_MetadataForm(self):
                    240:     """interface for adding the OSAS_add_Metadata"""
1.4       dwinter   241:     pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_metadata.zpt').__of__(self)
1.1       dwinter   242:     return pt()
                    243: 
1.5       dwinter   244: def manage_AddOSAS_add_Metadata(self,id,linklabel,description,fields,RESPONSE=None):
1.1       dwinter   245:     """add the OSAS_root"""
1.5       dwinter   246:     newObj=OSAS_add_Metadata(id,linklabel,description,fields)
1.1       dwinter   247:     self.Destination()._setObject(id,newObj)
                    248:     if RESPONSE is not None:
                    249:         RESPONSE.redirect('manage_main')
                    250: 
                    251:             
                    252: InitializeClass(OSAS_add_Metadata)
                    253: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>