--- ECHO_content/ECHO_helpers.py 2009/04/14 16:31:27 1.97
+++ ECHO_content/ECHO_helpers.py 2012/01/03 13:02:31 1.104
@@ -19,6 +19,8 @@ import bz2
import xmlrpclib
import sys
import logging
+import amara
+from xml.sax.saxutils import escape
#erstzt logging
def logger(txt,method,txt2):
@@ -91,7 +93,7 @@ class ECHO_basis:
# Managment for the PID
def setPID(self,pid):
"""set the pid"""
- logging.debug(self.getID()+" PID set to "+pid)
+ logging.debug(self.getId()+" PID set to "+pid)
self.pid=pid
return True
@@ -142,25 +144,25 @@ class ECHO_basis:
def showRDF(self):
"""showrdf"""
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
- ret="""\n\n"""
+ ret="""\n\n"""
ret+=self.getRDF(urn="echo:collectionroot")+"\n"
- ret+=""""""
+ ret+=""""""
return ret
def RDF(self):
"""showrdf"""
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
- ret="""\n\n"""
+ ret="""\n\n"""
ret+=self.getRDF(urn=self.absolute_url())+"\n"
- ret+=""""""
+ ret+=""""""
return ret
@@ -170,10 +172,10 @@ class ECHO_basis:
urn=self.absolute_url()
ret=""
- rettemp="""\n"""%urn
+ rettemp="""\n"""%urn
flag=0
- li="""\n"""
+ li="""\n"""
if not ('' in self.getFullTextXML(noredirect='Yes')):
nurn=self.absolute_url()+'/getFullTextXML'
rettemp+=li%nurn
@@ -189,7 +191,7 @@ class ECHO_basis:
rettemp+=li%nurn
flag=1
- rettemp+=""
+ rettemp+=""
if flag==1:
ret+=rettemp
@@ -653,7 +655,17 @@ def readFieldFromXML(meta_url,parent,fie
return getText(field[0].childNodes)
-
+def readFieldFromXML_xpath(meta_url,xpath):
+ """xpath auf meta_url"""
+ #logging.debug("try to parse:"+meta_url)
+ #logging.debug("Xtry to parse xpath:"+xpath)
+ doc = amara.parse(meta_url)
+ #logging.debug("have:"+doc.xml())
+ node= doc.xml_xpath(xpath)
+ if node is None:
+ return None
+
+ return unicode(node[0])
def urlopen(url):
"""urlopen mit timeout"""
@@ -788,14 +800,19 @@ def ECHO_rerenderLinksMD(self,obj=None,t
if entry[1].meta_type == 'ECHO_resource':
try:
entry[1].ECHO_getResourceMD(template="no",overwrite="yes")
+ logging.debug("ECHO_rerenderLinksMD: gotMD")
if "title" in types:
entry[1].generate_title()
+ logging.debug("ECHO_rerenderLinksMD: generatedTitle")
if "label" in types:
entry[1].generate_label()
- ret+="OK:"+entry[0]+"-- "+entry[1].getTitle().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"
"
+ logging.debug("ECHO_rerenderLinksMD: generatedLabel")
+ ret+="OK:"+entry[0]+"-- "+self.unicodify(entry[1].getTitle())+"-- "+self.unicodify(entry[1].getTitle())+"
"
except:
+
ret+="Error:"+entry[0]+"
"
-
+ logging.debug("ECHO_rerenderLinksMD: error")
+ logging.debug("%s %s"%(sys.exc_info()[0],sys.exc_info()[1]))
@@ -826,19 +843,19 @@ def getRDFDescription(self,linkURL,urn=N
"""rdf"""
ret=""
- about=""""""
- name="""%s"""
- link="""%s"""
- clickable="""%s"""
- #link=""""""
- type="""%s"""
+ about=""""""
+ name="""%s"""
+ link="""%s"""
+ clickable="""%s"""
+ #link=""""""
+ type="""%s"""
- #xlink=""""""
+ #xlink=""""""
if ap=="":
ap2=""
else:
- ap2 = """%s"""%ap
+ ap2 = """%s"""%ap
if not urn:
#urn="urn:"+re.sub('/',':',self.absolute_url())
@@ -846,11 +863,11 @@ def getRDFDescription(self,linkURL,urn=N
about2=about%urn
if not nameDef:
if hasattr(self,'label') and not (self.label==""):
- name2=name%self.label
+ name2=name%escape(self.label)
elif not self.title=="":
- name2=name%self.title
+ name2=name%escape(self.title)
else:
- name2=name%self.getId()
+ name2=name%escape(self.getId())
name2=re.sub('&','&',name2)
else:
@@ -867,8 +884,13 @@ def getRDFDescription(self,linkURL,urn=N
type2=type%typeName
- #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n"
- ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n"+ap2+"\n"
+
+ #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n"
+ try:
+ ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n"+ap2+"\n"
+ except:
+ ret=self.unicodify(about2)+"\n"+self.unicodify(name2)+"\n"+self.unicodify(type2)+"\n"+self.unicodify(clickable2)+"\n"+self.unicodify(ap2)+"\n"
+
return ret
def getCopyrightsFromForm(self,argv):
@@ -1060,12 +1082,13 @@ def writeMetadata(url,metadict,project=N
try:
dom=xml.dom.minidom.parseString(geturl)
+
except:
logger("ECHO writeMetadata",logging.ERROR,"Cannot parse: "+url+"
"+geturl)
return (None,"Cannot parse: "+url+"
"+geturl)
-
+ logging.debug("getting:"+geturl)
metanodes=dom.getElementsByTagName('bib')
if not metanodes:
@@ -1141,6 +1164,7 @@ def readMetadata(url):
"""Methode zum Auslesen der Metadateninformation zu einer Resource
Vorerst noch Typ bib"""
+ logging.debug("getting:" +url)
metadict={}
try:
@@ -1176,7 +1200,7 @@ def readMetadata(url):
try:
#print urllib.unquote(getText(node.childNodes)),getText(node.childNodes)
#metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes))
- metadict[re.sub('-','_',node.tagName.lower())]=getText(node.childNodes)
+ metadict[node.tagName]=getText(node.childNodes)
except:
"""nothing"""