File:  [Repository] / OSAS / OSA_system / OSAS_metadata.py
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Wed Apr 14 22:35:48 2004 UTC (20 years, 2 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
feherhafte print in getvalue deleted

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

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