Diff for /OSA_system2/OSAS_metadata.py between versions 1.5 and 1.13

version 1.5, 2005/03/07 19:33:42 version 1.13, 2005/11/29 10:34:03
Line 12  import xml.dom.pulldom Line 12  import xml.dom.pulldom
 import OSAS_helpers  import OSAS_helpers
 import zLOG  import zLOG
 import string  import string
 import xml.xpath  try:
       from xml.xpath import Evaluate
   except:
       from Ft.Xml.XPath import Evaluate
 import xmlrpclib  import xmlrpclib
   
 from types import *  from types import *
Line 107  class OSAS_MetadataMapping(SimpleItem): Line 110  class OSAS_MetadataMapping(SimpleItem):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
           manage_workspace=changeMetadataMappingForm    
   
 def manage_addMetadataMappingForm(self):  def manage_addMetadataMappingForm(self):
     """interface for adding the OSAS_root"""      """interface for adding the OSAS_root"""
Line 121  def manage_addMetadataMapping(self,idOfO Line 124  def manage_addMetadataMapping(self,idOfO
     argList={}      argList={}
     for arg in self.fieldList:      for arg in self.fieldList:
         if not (arg in ['idOfObject','titleOfObject']):          if not (arg in ['idOfObject','titleOfObject']):
             argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg],arglist['status_'+fieldName],arglist['values_'+fieldName])              argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg],self.REQUEST.form['status_'+arg],self.REQUEST.form['values_'+arg])
                           
     newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList)      newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList)
     self._setObject(idOfObject,newObj)      self._setObject(idOfObject,newObj)
Line 181  class OSAS_Metadata(Folder): Line 184  class OSAS_Metadata(Folder):
     def generateMappingList(self):      def generateMappingList(self):
         """Erzeuge Mapping"""          """Erzeuge Mapping"""
         mapping={}          mapping={}
   
         for dict in self.__dict__:          for dict in self.__dict__:
             #print dict              #print dict
             obj=getattr(self,dict)              obj=getattr(self,dict)
             if hasattr(obj,'meta_type'):              if hasattr(obj,'meta_type'):
                 if obj.meta_type=="OSAS_MetadataMapping":                  if obj.meta_type=="OSAS_MetadataMapping__neu":
                     mapping[obj.getId()]=obj.generateMappingHash()                      mapping[obj.getId()]=obj.generateMappingHash()
           
         return mapping          return mapping
           
     def generateMappingForType(self,type,clean="yes"):      def generateMappingForType(self,type,clean="yes"):
         """erzeuge spezifisches Mapping"""          """erzeuge spezifisches Mapping"""
           
         hash=self.generateMappingList()          hash=self.generateMappingList()
         if hash.has_key(type):          
           for key in hash.keys():
               if (key.lower() == type.lower()):
             if clean=="yes":              if clean=="yes":
                 temp={}                  temp={}
                 for x in hash[type].keys():                      for x in hash[key].keys():
                     if not hash[type][x]=="":                          if not hash[key][x]=="":
                         temp[x]=hash[type][x]                              temp[x]=hash[key][x]
                 return temp                  return temp
             else:              else:
                 return hash[type]  
                   
         else:                      return hash[key]
               
             return {}              return {}
   
     def getFieldList(self):      def getFieldList(self):
Line 212  class OSAS_Metadata(Folder): Line 220  class OSAS_Metadata(Folder):
         except:          except:
             return ""              return ""
                   
       security.declarePublic('getFields')
     def getFields(self):      def getFields(self):
         """ausgabe der Felder"""          """ausgabe der Felder"""
         return self.fieldList          return self.fieldList
Line 239  class OSAS_Metadata(Folder): Line 248  class OSAS_Metadata(Folder):
                   
         types=[]          types=[]
   
         for obj in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping_neu']):          for obj in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping__neu']):
              if obj.title=="":          if obj[1].title=="":
                  title=obj.id          title=obj[1].id
              else:               else:
                  title=obj.title          title=obj[1].title
              types.append((obj.id,title,obj))          types.append((obj[1].id, title, obj[1]))
   
         return types          return types
   
Line 263  class OSAS_Metadata(Folder): Line 272  class OSAS_Metadata(Folder):
   
     def getDisplayFieldsAsStr(self,indexMeta):      def getDisplayFieldsAsStr(self,indexMeta):
         ret=[]          ret=[]
           try:
         if indexMeta and not (indexMeta==""):          if indexMeta and not (indexMeta==""):
             dom=xml.dom.pulldom.parseString(indexMeta)              dom=xml.dom.pulldom.parseString(indexMeta)
   
Line 287  class OSAS_Metadata(Folder): Line 297  class OSAS_Metadata(Folder):
                     return "; ".join(ret)                      return "; ".join(ret)
         else:          else:
             return ""              return ""
           except:
               return ""
     def getDisplayFieldsAsStrOLD(self,indexMeta):      def getDisplayFieldsAsStrOLD(self,indexMeta):
         """Gebe display fields als string zurück          """Gebe display fields als string zurück
         @param path: Pfad zum Object          @param path: Pfad zum Object
Line 387  class OSAS_Metadata(Folder): Line 398  class OSAS_Metadata(Folder):
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetadataForm_template.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetadataForm_template.zpt')).__of__(self)
         return pt()          return pt()
   
       def readMetadata(self,MDF_path,MDF_type,MDF_prefix="",MDF_xpathStart="", MDF_addPath=None,MDF_identifyFields=None,newdoc=None,actualNode=None):
   
           if type(MDF_path)==ListType:
                   MDF_path=MDF_path[0]
   
           indexFile=os.path.join(MDF_path,'index.meta')
   
           server=xmlrpclib.Server(self.serverUrl)
           
           documentStr=server.getFile(indexFile)
           
           if documentStr:
               newdoc=xml.dom.minidom.parseString(documentStr)
               dom=newdoc.documentElement
               actualNode=dom
           else:
               return {}
   
           if self.containerTag=="":
               containerTag="doc"
           else:
               containerTag=self.containerTag
               
           if MDF_xpathStart=="":
               dom=newdoc.documentElement
               actualNode=dom
           else:
               #try to find xpath
               if MDF_identifyFields:
                   query=[]
                   for field in MDF_identifyFields.keys():
   
                       query.append("""(%s="%s")"""%(field,MDF_identifyFields[field]))
                   querystr=" and ".join(query)
                   xpathStr=MDF_xpathStart+"[%s]"%querystr
                   
               else:
                   xpathStr=MDF_xpathStart
   
   
               xpathNodes=Evaluate(xpathStr,actualNode)
               
   
               if len(xpathNodes)>0:
                   actualNode=xpathNodes[0]
               else:
                   return {}
   
           ret={}
           for node in actualNode.childNodes:
               name=node.tagName
               text=OSAS_helpers.getText(node.childNodes)
               ret[name]=text
   
           return ret
           
     def writeMetadata(self,MDF_path,MDF_type,form,MDF_prefix="",MDF_xpathStart="", MDF_addPath=None,MDF_identifyFields=None,newdoc=None,actualNode=None):      def writeMetadata(self,MDF_path,MDF_type,form,MDF_prefix="",MDF_xpathStart="", MDF_addPath=None,MDF_identifyFields=None,newdoc=None,actualNode=None):
         """writeMetadata"""          """writeMetadata"""
         #MDF_path="/tmp/index.meta"          #MDF_path="/tmp/index.meta"
         if type(MDF_path)==ListType:          if type(MDF_path)==ListType:
                 MDF_path=MDF_path[0]                  MDF_path=MDF_path[0]
   
   
         indexFile=os.path.join(MDF_path,'index.meta')          indexFile=os.path.join(MDF_path,'index.meta')
   
         server=xmlrpclib.Server(self.serverUrl)          server=xmlrpclib.Server(self.serverUrl)
Line 441  class OSAS_Metadata(Folder): Line 509  class OSAS_Metadata(Folder):
                 xpathStr=MDF_xpathStart                  xpathStr=MDF_xpathStart
   
   
             xpathNodes=xml.xpath.Evaluate(xpathStr,actualNode)              xpathNodes=Evaluate(xpathStr,actualNode)
                           
   
   
Line 452  class OSAS_Metadata(Folder): Line 520  class OSAS_Metadata(Folder):
             else:              else:
                 #existiert nicht dann neue erzeugen                  #existiert nicht dann neue erzeugen
   
                 if len(xml.xpath.Evaluate(MDF_xpathStart,dom))>0:                  if len(Evaluate(MDF_xpathStart,dom))>0:
   
                     create=True                      create=True
                                   
Line 509  class OSAS_Metadata(Folder): Line 577  class OSAS_Metadata(Folder):
                 actualNode.appendChild(namenode)                  actualNode.appendChild(namenode)
                                   
         ret=newdoc.toxml(encoding='utf-8')          ret=newdoc.toxml(encoding='utf-8')
       zLOG.LOG("OSAS_metadata (writeMetadata)",zLOG.INFO,"write: %s"%ret)
   
   
         server.writeMetaDataFile(indexFile,ret)          server.writeMetaDataFile(indexFile,ret)
   

Removed from v.1.5  
changed lines
  Added in v.1.13


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