|
|
| version 1.6, 2005/03/07 21:25:41 | version 1.8, 2005/04/25 19:55:30 |
|---|---|
| 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 389 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') |
| server=xmlrpclib.Server(self.serverUrl) | server=xmlrpclib.Server(self.serverUrl) |
| Line 443 class OSAS_Metadata(Folder): | Line 503 class OSAS_Metadata(Folder): |
| xpathStr=MDF_xpathStart | xpathStr=MDF_xpathStart |
| xpathNodes=xml.xpath.Evaluate(xpathStr,actualNode) | xpathNodes=Evaluate(xpathStr,actualNode) |
| Line 454 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 |