Annotation of OSAS/OSA_system/OSAS_metadata.py, revision 1.6
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.6 ! dwinter 51: print self.__dict__
! 52: print self,fieldName,getattr(self,"md_"+fieldName)
1.5 dwinter 53: try:
54: return getattr(self,"md_"+fieldName)
55: except:
56: return ""
57:
58: def generateMappingHash(self):
59: """erzeugen des Hash"""
60: hash={}
61: for field in self.fieldList:
62: hash[field]=getattr(self,"md_"+field)
63: return hash
64:
65:
66:
67: def change_OSAS_MappingForm(self):
68: """change"""
69: pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_MetadataMapping.zpt').__of__(self)
70: return pt()
71:
72: def change_OSAS_Mapping(self,titleOfObject,RESPONSE=None):
73: """change"""
1.1 dwinter 74:
1.5 dwinter 75: self.title=titleOfObject
76: arglist=self.REQUEST.form
77: self.fields=[]
78:
79:
80: for fieldName in self.readFieldsFromParent():
81:
1.6 ! dwinter 82: setattr(self,"md_"+fieldName,(arglist[fieldName],arglist['label_'+fieldName],arglist['explanation_'+fieldName]))
1.5 dwinter 83: self.fields.append(arglist[fieldName])
84:
85: if RESPONSE is not None:
86: RESPONSE.redirect('manage_main')
87:
88:
89:
90: def manage_addOSAS_MetadataMappingForm(self):
91: """interface for adding the OSAS_root"""
92: pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_MetadataMapping.zpt').__of__(self)
93: return pt()
94:
95: def manage_addOSAS_MetadataMapping(self,idOfObject,titleOfObject,RESPONSE=None):
96: """add the OSAS_root"""
97:
98: argList={}
1.6 ! dwinter 99: for arg in self.fieldList:
1.5 dwinter 100: if not (arg in ['idOfObject','titleOfObject']):
1.6 ! dwinter 101: argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg])
! 102:
! 103: newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList,self.fieldList)
1.5 dwinter 104: self._setObject(idOfObject,newObj)
105: if RESPONSE is not None:
106: RESPONSE.redirect('manage_main')
1.1 dwinter 107:
1.5 dwinter 108:
1.1 dwinter 109:
110:
111: class OSAS_add_Metadata(Folder):
112: """Foldertype enthält methoden zur Halbautomatischen Erstellung von Metadatenfiles"""
113: security=ClassSecurityInfo()
114:
1.5 dwinter 115: def __init__(self,id,linklabel,description,fields):
1.1 dwinter 116: """initialize a new instance"""
117: self.id = id
118: self.linklabel =linklabel #label fuer link auf add page
119: self.description=description #description of the method for link page
1.5 dwinter 120: self.fieldList=fields.split(",")[0:]
1.1 dwinter 121:
122: meta_type='OSAS_add_Metadata'
123:
124: manage_options = Folder.manage_options+(
125: {'label':'Main Config','action':'add_Metadata_config'},
126: )
127:
128:
1.5 dwinter 129: def generateMappingList(self):
130: """Erzeuge Mapping"""
131: mapping={}
132: for dict in self.__dict__:
133: #print dict
134: obj=getattr(self,dict)
135: if hasattr(obj,'meta_type'):
136: if obj.meta_type=="OSAS_MetadataMapping":
137: mapping[obj.getId()]=obj.generateMappingHash()
138: return mapping
139:
140: def generateMappingForType(self,type,clean="yes"):
141: """erzeuge spezifisches Mapping"""
142: hash=self.generateMappingList()
143: if hash.has_key(type):
144: if clean=="yes":
145: temp={}
146: for x in hash[type].keys():
147: if not hash[type][x]=="":
148: temp[x]=hash[type][x]
149: return temp
150: else:
151: return hash[type]
152:
153: else:
154: return {}
155:
156: def getFieldList(self):
157: """erzeuge string aus fields"""
158: try:
159: return string.join(self.fieldList,",")
160: except:
161: return ""
162:
163: def getFields(self):
164: """ausgabe der Felder"""
165: return self.fieldList
166:
167: def getTypeTitle(self,id):
168: """Title von ID"""
169: try:
170: obj=getattr(self,id)
171: return obj.title
172: except:
173: return id
174:
175: def getStoredTypes(self):
176: """Gebe gespeicherte typen zurück"""
177:
178: types=[]
179: for dict in self.__dict__:
180:
181: obj=getattr(self,dict)
182: if hasattr(obj,'meta_type'):
183: if obj.meta_type=="OSAS_MetadataMapping":
184: #print obj
185: if obj.title=="":
186: title=obj.id
187: else:
188: title=obj.title
189: types.append((obj.id,title))
190: return types
1.1 dwinter 191:
192: security.declarePublic('add_Metadata_config')
193: def add_Metadata_config(self):
194: """Main configuration"""
1.4 dwinter 195: pt=PageTemplateFile('Products/OSA_system/zpt/ChangeOSAS_addMetadata.zpt').__of__(self)
1.1 dwinter 196: return pt()
197:
1.3 dwinter 198: security.declarePublic('change_OSAS_addMetadata')
1.5 dwinter 199: def change_OSAS_addMetadata(self,linklabel,description,fields,RESPONSE=None):
1.1 dwinter 200: """Change Metadata"""
1.3 dwinter 201: self.linklabel=linklabel
202: self.description=description
1.5 dwinter 203: self.fieldList=fields.split(",")[0:]
1.1 dwinter 204: if RESPONSE is not None:
205: RESPONSE.redirect('manage_main')
206:
207: security.declarePublic('index_html')
208: def index_html(self):
1.5 dwinter 209: """standard aufruf"""
1.1 dwinter 210: return OSAS_add.add(self,no_upload=0)
211:
212:
213: security.declarePublic('add2')
214: def add2(self):
215: """ anlegen naechster schritt"""
216: return OSAS_add.add2(self)
217:
218: def add3(self):
219: """Foldername"""
220: return OSAS_add.add3(self)
221:
222: def add6(self):
223: """write new index.meta file"""
224: return OSAS_add.add6(self)
1.6 ! dwinter 225:
! 226:
! 227:
1.1 dwinter 228:
229: def manage_AddOSAS_add_MetadataForm(self):
230: """interface for adding the OSAS_add_Metadata"""
1.4 dwinter 231: pt=PageTemplateFile('Products/OSA_system/zpt/AddOSAS_metadata.zpt').__of__(self)
1.1 dwinter 232: return pt()
233:
1.5 dwinter 234: def manage_AddOSAS_add_Metadata(self,id,linklabel,description,fields,RESPONSE=None):
1.1 dwinter 235: """add the OSAS_root"""
1.5 dwinter 236: newObj=OSAS_add_Metadata(id,linklabel,description,fields)
1.1 dwinter 237: self.Destination()._setObject(id,newObj)
238: if RESPONSE is not None:
239: RESPONSE.redirect('manage_main')
240:
241:
242: InitializeClass(OSAS_add_Metadata)
243:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>