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

version 1.4, 2005/03/03 20:41:00 version 1.8, 2005/04/25 19:55:30
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 262  class OSAS_Metadata(Folder): Line 266  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 289  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 392  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 502  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 514  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.8


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