|
|
| 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 |