version 1.4, 2005/03/03 20:41:00
|
version 1.9, 2005/10/10 18:11:10
|
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 |
|
|