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