Diff for /OSA_system2/OSAS_metadata.py between versions 1.4 and 1.10

version 1.4, 2005/03/03 20:41:00 version 1.10, 2005/10/10 19:10:33
Line 6  from OFS.Folder import Folder Line 6  from OFS.Folder import Folder
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 import os.path  import os.path
   import sys
 import xml.dom.minidom  import xml.dom.minidom
 import xml.dom.pulldom  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 106  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 180  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":                  print obj.meta_type
                   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 262  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==""):
         dom=xml.dom.pulldom.parseString(indexMeta)          dom=xml.dom.pulldom.parseString(indexMeta)
   
         for (event,node) in dom:          for (event,node) in dom:
Line 284  class OSAS_Metadata(Folder): Line 295  class OSAS_Metadata(Folder):
                         """nothing"""                          """nothing"""
                                   
                 return "; ".join(ret)                  return "; ".join(ret)
            else:
               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 384  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')
         print "load index file",indexFile          
         server=xmlrpclib.Server(self.serverUrl)          server=xmlrpclib.Server(self.serverUrl)
         if newdoc:          if newdoc:
             if not actualNode: actualNode=newdoc              if not actualNode: actualNode=newdoc
             dom=newdoc              dom=newdoc
         else:          else:
             documentStr=server.getFile(indexFile)              documentStr=server.getFile(indexFile)
             print indexFile  
             print "ds",documentStr  
             if documentStr:              if documentStr:
                 print "hhh"  
                 newdoc=xml.dom.minidom.parseString(documentStr)                  newdoc=xml.dom.minidom.parseString(documentStr)
                 dom=newdoc.documentElement                  dom=newdoc.documentElement
                 actualNode=dom                  actualNode=dom
   
   
             else:              else:
                 print "ho2"  
                 impl=xml.dom.minidom.getDOMImplementation()                  impl=xml.dom.minidom.getDOMImplementation()
                 newdoc=None                  newdoc=None
   
Line 438  class OSAS_Metadata(Folder): Line 508  class OSAS_Metadata(Folder):
             else:              else:
                 xpathStr=MDF_xpathStart                  xpathStr=MDF_xpathStart
   
             print xpathStr,actualNode  
             xpathNodes=xml.xpath.Evaluate(xpathStr,actualNode)              xpathNodes=Evaluate(xpathStr,actualNode)
                           
   
   
Line 450  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
                                   

Removed from v.1.4  
changed lines
  Added in v.1.10


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