#objekte zur erzeugung und verwaltung von metadaten
from OFS.Folder import Folder
from Globals import Persistent
from Acquisition import Implicit
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
from OFS.SimpleItem import SimpleItem
import string
class ZSQLMetadataMapping(SimpleItem):
"""Einfaches Mapping Object"""
meta_type="ZSQLMetadataMapping"
def readFieldsFromParent(self):
"""read all elements from root"""
return self.ac_parent.fields
def __init__(self,id,title,arglist):
"""init"""
self.id=id
self.title=title
for fieldName in arglist.keys():
setattr(self,"md_"+fieldName,arglist[fieldName])
manage_options = SimpleItem.manage_options+(
{'label':'Main Config','action':'change_ZSQLMappingForm'},
)
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_ZSQLMappingForm(self):
"""change"""
pt=PageTemplateFile('Products/ZSQLExtend/ChangeZSQLMetadataMapping.zpt').__of__(self)
return pt()
def change_ZSQLMapping(self,titleOfObject,RESPONSE=None):
"""change"""
self.title=titleOfObject
arglist=self.REQUEST.form
for fieldName in arglist.keys():
setattr(self,"md_"+fieldName,arglist[fieldName])
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def manage_addZSQLMetadataMappingForm(self):
"""interface for adding the OSAS_root"""
pt=PageTemplateFile('Products/ZSQLExtend/AddZSQLMetadataMapping.zpt').__of__(self)
return pt()
def manage_addZSQLMetadataMapping(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=ZSQLMetadataMapping(idOfObject,titleOfObject,argList)
self._setObject(idOfObject,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
class ZSQLMetadataMappingRoot(Persistent, Implicit, Folder):
"""Root ordner für Metadaten set"""
meta_type='ZSQLMetadataMappingRoot'
def __init__(self,id,title,fields):
self.id=id
self.title=title
self.fieldList=fields.split(",")[0:]
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'change_ZSQLMappingRootForm'},
)
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=="ZSQLMetadataMapping":
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"""
return string.join(self.fieldList,",")
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=="ZSQLMetadataMapping":
#print obj
if obj.title=="":
title=obj.id
else:
title=obj.title
types.append((obj.id,title))
return types
def change_ZSQLMappingRootForm(self):
"""change"""
pt=PageTemplateFile('Products/ZSQLExtend/ChangeZSQLMetadataMappingRoot.zpt').__of__(self)
return pt()
def change_ZSQLMetadataMapping(self,title,fields,RESPONSE=None):
"""change entries"""
self.title=title
self.fieldList=fields.split(",")[0:]
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def manage_addZSQLMetadataMappingRootForm(self):
"""interface for adding the OSAS_root"""
pt=PageTemplateFile('Products/ZSQLExtend/AddZSQLMetadataMappingRoot.zpt').__of__(self)
return pt()
def manage_addZSQLMetadataMappingRoot(self,id,title,fields,RESPONSE=None):
"""add the OSAS_root"""
newObj=ZSQLMetadataMappingRoot(id,title,fields)
self._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>