--- ECHO_content/ECHO_helpers.py 2008/11/19 14:22:42 1.93
+++ ECHO_content/ECHO_helpers.py 2012/01/16 18:57:50 1.103.2.2
@@ -19,6 +19,7 @@ import bz2
import xmlrpclib
import sys
import logging
+#import amara
#erstzt logging
def logger(txt,method,txt2):
@@ -27,6 +28,10 @@ def logger(txt,method,txt2):
displayTypes = ['ZSQLExtendFolder','ZSQLBibliography','ECHO_group','ECHO_collection','ECHO_resource','ECHO_link','ECHO_sqlElement','ECHO_pageTemplate','ECHO_externalLink','ImageCollectionIFrame','VLP_resource','VLP_essay','ECHO_ZCatalogElement','ImageCollection','versionedFileFolder','extVersionedFileFolder','ECHO_movie']
+def normalizeCt(str):
+ """normalizes content_type"""
+ #str= str.replace(" ","_")
+ return str.replace("-"," ").lower()
#decode and compress for xmlrpc communication with OSAS_server
@@ -87,13 +92,32 @@ class ECHO_basis:
# Managment for the PID
def setPID(self,pid):
"""set the pid"""
+ logging.debug(self.getId()+" PID set to "+pid)
self.pid=pid
return True
def getPID(self):
"""get the pid"""
- return getattr(self,'pid',None)
+
+ pid =getattr(self,'pid',None)
+
+ if pid == self.getParentPID():
+ return None
+ else:
+ return pid
+
+
+ def getParentPID(self):
+ """get the PID of the parent"""
+ parent = self.aq_parent
+
+ pidF = getattr(parent,'getPID',None)
+ if pidF is None:
+ return None
+
+ else:
+ return pidF()
def unicodify(self, s):
"""return unicode object for string (utf-8 or latin1) or unicode object s"""
@@ -119,24 +143,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
@@ -146,10 +171,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
@@ -165,7 +190,7 @@ class ECHO_basis:
rettemp+=li%nurn
flag=1
- rettemp+=""
+ rettemp+=""
if flag==1:
ret+=rettemp
@@ -182,8 +207,8 @@ class ECHO_basis:
nurn=self.absolute_url()+'/showMetaDataXML'
ret+=getRDFDescription(self,self.absolute_url()+'/showMetaDataXML',urn=nurn,nameDef="Metadata",typeName="ECHO_metaData")
+
return ret
-
def content_html_XMLRpc(self):
"""xml_rpc_version"""
return encodeRPC(self.content_html())
@@ -299,9 +324,7 @@ class ECHO_basis:
def getOverview(self):
"""map overview graphics"""
#return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1]
- if self.hasOverview():
- return getattr(self, 'overview')
- return None
+ return getattr(self, 'overview', None)
def getMapAreas(self):
"""returns the list of MapAreas"""
@@ -629,7 +652,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"""
@@ -764,51 +797,44 @@ 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]))
return "
"+ret+"Rerenderd all links to resources in: "+self.title+""
-def reloadMetaDataFromStorage(self,RESPONSE=None):
- """copy metadata from the storage to ECHO"""
- ret=""
- resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
- if RESPONSE is not None:
- RESPONSE.setHeader("Content-Type", type)
- RESPONSE.write("\n")
-
- for resource in resources:
- x=str(resource[1].copyIndex_meta2echo_resource())+"
"
- if RESPONSE is not None:
- RESPONSE.write(x+"\n")
-
- ret+=x
-
- if RESPONSE is not None:
- #RESPONSE.redirect('./manage_main')
- RESPONSE.write( "")
- return ret
-def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None):
+def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None,ap=""):
"""rdf"""
ret=""
- about=""""""
- name="""%s"""
- link="""%s"""
- clickable="""%s"""
- #link=""""""
- type="""%s"""
- #xlink=""""""
+ about=""""""
+ name="""%s"""
+ link="""%s"""
+ clickable="""%s"""
+ #link=""""""
+ type="""%s"""
+
+ #xlink=""""""
+
+ if ap=="":
+ ap2=""
+ else:
+ ap2 = """%s"""%ap
+
if not urn:
#urn="urn:"+re.sub('/',':',self.absolute_url())
urn=self.absolute_url()
@@ -835,8 +861,14 @@ def getRDFDescription(self,linkURL,urn=N
else:
type2=type%typeName
- #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n"
- ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\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):
@@ -1105,51 +1137,7 @@ def writeMetadata(url,metadict,project=N
return dom.toxml(encoding='utf-8')
-def readMetadata(url):
- """Methode zum Auslesen der Metadateninformation zu einer Resource
- Vorerst noch Typ bib"""
-
- metadict={}
-
- try:
- geturl=""
- for line in urlopen(url).readlines():
- geturl=geturl+line
-
-
- except:
- return (None,"Cannot open: "+url)
-
- try:
- dom=xml.dom.minidom.parseString(geturl)
- except:
- return (None,"Cannot parse: "+url+"
"+geturl)
-
- metanode=dom.getElementsByTagName('bib')
- metadict['bib_type']='Book'
- if len(metanode)==0:
- metanode=dom.getElementsByTagName('archimedes')
- metadict['bib_type']='Archimedes'
-
-
- if not len(metanode)==0:
- metacontent=metanode[0].childNodes
- try:
- metadict['bib_type']=getText(dom.getElementsByTagName('bib')[0].attributes['type'].childNodes)
- except:
- """nothing"""
-
- for node in metacontent:
- 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)
-
- except:
- """nothing"""
-
- return (metadict,"")
class MapArea(SimpleItem):