Diff for /ECHO_content/ECHO_helpers.py between versions 1.91 and 1.104

version 1.91, 2008/09/08 19:23:18 version 1.104, 2012/01/03 13:02:31
Line 19  import bz2 Line 19  import bz2
 import xmlrpclib  import xmlrpclib
 import sys  import sys
 import logging  import logging
   import amara
   from xml.sax.saxutils import escape
   
 #erstzt logging  #erstzt logging
 def logger(txt,method,txt2):  def logger(txt,method,txt2):
Line 27  def logger(txt,method,txt2): Line 29  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']  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  #decode and compress for xmlrpc communication with OSAS_server
   
Line 84  class ECHO_basis: Line 90  class ECHO_basis:
     management_page_charset="utf-8"      management_page_charset="utf-8"
     isVisible = True      isVisible = True
           
       # 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"""
   
           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):      def unicodify(self, s):
         """return unicode object for string (utf-8 or latin1) or unicode object s"""          """return unicode object for string (utf-8 or latin1) or unicode object s"""
Line 109  class ECHO_basis: Line 144  class ECHO_basis:
     def showRDF(self):      def showRDF(self):
             """showrdf"""              """showrdf"""
             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')              self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
             ret="""<?xml version="1.0" encoding="utf-8"?>\n<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:ECHONAVIGATION="http://www.echo.eu/rdf#">\n"""              ret="""<?xml version="1.0" encoding="utf-8"?>\n<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:echonavigation="http://www.echo.eu/rdf#"
               xmlns:mpiwg="http://www.mpiwg-berlin.mpg.de/ns/mpiwg">\n"""
   
             ret+=self.getRDF(urn="echo:collectionroot")+"\n"              ret+=self.getRDF(urn="echo:collectionroot")+"\n"
   
   
             ret+="""</RDF:RDF>"""              ret+="""</rdf:rdf>"""
             return ret               return ret 
   
       
     def RDF(self):      def RDF(self):
             """showrdf"""              """showrdf"""
             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')              self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
             ret="""<?xml version="1.0" encoding="utf-8"?>\n<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:ECHONAVIGATION="http://www.echo.eu/rdf#">\n"""              ret="""<?xml version="1.0" encoding="utf-8"?>\n<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:echonavigation="http://www.echo.eu/rdf#">\n"""
   
             ret+=self.getRDF(urn=self.absolute_url())+"\n"              ret+=self.getRDF(urn=self.absolute_url())+"\n"
   
   
             ret+="""</RDF:RDF>"""              ret+="""</rdf:rdf>"""
             return ret               return ret 
   
       
Line 136  class ECHO_basis: Line 172  class ECHO_basis:
                     urn=self.absolute_url()                      urn=self.absolute_url()
             ret=""              ret=""
   
             rettemp="""<RDF:Seq RDF:about="%s">\n"""%urn              rettemp="""<rdf:Seq rdf:about="%s">\n"""%urn
             flag=0              flag=0
                           
             li="""<RDF:li RDF:resource="%s" />\n"""              li="""<rdf:li rdf:resource="%s" />\n"""
             if not ('<error>' in self.getFullTextXML(noredirect='Yes')):              if not ('<error>' in self.getFullTextXML(noredirect='Yes')):
                     nurn=self.absolute_url()+'/getFullTextXML'                      nurn=self.absolute_url()+'/getFullTextXML'
                     rettemp+=li%nurn                      rettemp+=li%nurn
Line 155  class ECHO_basis: Line 191  class ECHO_basis:
                     rettemp+=li%nurn                      rettemp+=li%nurn
                     flag=1                      flag=1
                                           
             rettemp+="</RDF:Seq>"              rettemp+="</rdf:Seq>"
   
             if flag==1:              if flag==1:
                     ret+=rettemp                      ret+=rettemp
Line 172  class ECHO_basis: Line 208  class ECHO_basis:
                     nurn=self.absolute_url()+'/showMetaDataXML'                      nurn=self.absolute_url()+'/showMetaDataXML'
                     ret+=getRDFDescription(self,self.absolute_url()+'/showMetaDataXML',urn=nurn,nameDef="Metadata",typeName="ECHO_metaData")                      ret+=getRDFDescription(self,self.absolute_url()+'/showMetaDataXML',urn=nurn,nameDef="Metadata",typeName="ECHO_metaData")
   
             return ret  
                           
               return ret
     def content_html_XMLRpc(self):      def content_html_XMLRpc(self):
         """xml_rpc_version"""          """xml_rpc_version"""
         return encodeRPC(self.content_html())          return encodeRPC(self.content_html())
Line 207  class ECHO_basis: Line 243  class ECHO_basis:
             return self.isVisible              return self.isVisible
         return True          return True
           
       def getDescription(self):
           """get content of description field"""
           
         
           return self.unicodify(getattr(self,'description',''));
       
     def getTitle(self):      def getTitle(self):
         """title"""          """title"""
         if hasattr(self,'getLanguage'):          if hasattr(self,'getLanguage'):
Line 456  class ECHO_basis: Line 498  class ECHO_basis:
         bt = BrowserCheck(self)          bt = BrowserCheck(self)
         id = ob.getFullId()          id = ob.getFullId()
         link = ob.getLinkId()          link = ob.getLinkId()
           url = ob.getTargetUrl()
           if url == "":
               # ECHOResource with empty link -> no link
               href = 'href="#" onclick="return false;"'
           else:
               href = 'href="%s"'%ob.getLinkId()
           
           if target is None:
               targetattr = ""
           else:
               targetattr = 'target="%s"'%target
         tiptext = ob.getTip()          tiptext = ob.getTip()
         tag = ""          tag = ""
   
Line 481  class ECHO_basis: Line 534  class ECHO_basis:
                                   
                 if float(rot) < 0:                  if float(rot) < 0:
                     marksrc = circlesrc                      marksrc = circlesrc
                 tag += '<a href="%s"><img border="0" src="%s&rot=%s" /></a>'%(link,marksrc,rot)                  tag += '<a %s><img border="0" src="%s&rot=%s" /></a>'%(href,marksrc,rot)
             elif ob.isTypeText():              elif ob.isTypeText():
                 # N4 - Text                  # N4 - Text
                 tag += '<div id="t.%s" class="maptext"'%(id)                  tag += '<div id="t.%s" class="maptext"'%(id)
Line 490  class ECHO_basis: Line 543  class ECHO_basis:
                 tag += '</div>'                  tag += '</div>'
             else:              else:
                 # N4 - Area                  # N4 - Area
                 tag += '<a href="%s"><img border="0" width="1000" height="1000" src="trans_img"'%(link)                  tag += '<a %s><img border="0" width="1000" height="1000" src="trans_img"'%(href)
                 if tiptext:                  if tiptext:
                     tag += ' alt="%s"'%tiptext                      tag += ' alt="%s"'%tiptext
                 tag += ' /></a>'                  tag += ' /></a>'
Line 499  class ECHO_basis: Line 552  class ECHO_basis:
             #              #
             # (more or less) DOM capable browser              # (more or less) DOM capable browser
             #              #
             tag = '<a id="b.%s" class="mapmarklink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" href="%s" target="%s">'%(id,id,id,link,target)              tag = '<a id="b.%s" class="mapmarklink" onmouseover="highlightPair(\'%s\', true)" onmouseout="highlightPair(\'%s\', false)" %s %s>'%(id,id,id,href,targetattr)
             if ob.isTypeArrow():              if ob.isTypeArrow():
                 # DOM - Arrow                  # DOM - Arrow
                 rot = ob.angle                  rot = ob.angle
Line 602  def readFieldFromXML(meta_url,parent,fie Line 655  def readFieldFromXML(meta_url,parent,fie
   
         return getText(field[0].childNodes)          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):  def urlopen(url):
         """urlopen mit timeout"""          """urlopen mit timeout"""
Line 737  def ECHO_rerenderLinksMD(self,obj=None,t Line 800  def ECHO_rerenderLinksMD(self,obj=None,t
                 if entry[1].meta_type == 'ECHO_resource':                  if entry[1].meta_type == 'ECHO_resource':
                         try:                          try:
                                 entry[1].ECHO_getResourceMD(template="no",overwrite="yes")                                  entry[1].ECHO_getResourceMD(template="no",overwrite="yes")
                                   logging.debug("ECHO_rerenderLinksMD: gotMD")
                                 if "title" in types:                                  if "title" in types:
                                     entry[1].generate_title()                                      entry[1].generate_title()
                                       logging.debug("ECHO_rerenderLinksMD: generatedTitle")
                                 if "label" in types:                                  if "label" in types:
                                     entry[1].generate_label()                                      entry[1].generate_label()
                                 ret+="OK:"+entry[0]+"-- "+entry[1].getTitle().decode('utf-8')+"-- "+entry[1].getTitle().decode('utf-8')+"<br>"                                      logging.debug("ECHO_rerenderLinksMD: generatedLabel")
                                   ret+="OK:"+entry[0]+"-- "+self.unicodify(entry[1].getTitle())+"-- "+self.unicodify(entry[1].getTitle())+"<br>"
                         except:                          except:
                                 ret+="Error:"+entry[0]+"<br>"  
   
                                   ret+="Error:"+entry[0]+"<br>"
                                   logging.debug("ECHO_rerenderLinksMD: error")
                                   logging.debug("%s %s"%(sys.exc_info()[0],sys.exc_info()[1]))
                                   
                                   
                                   
Line 771  def reloadMetaDataFromStorage(self,RESPO Line 839  def reloadMetaDataFromStorage(self,RESPO
   
             return ret              return ret
           
 def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None):  def getRDFDescription(self,linkURL,urn=None,nameDef=None,typeName=None,ap=""):
             """rdf"""              """rdf"""
                           
             ret=""              ret=""
             about="""<RDF:Description RDF:about="%s">"""              about="""<rdf:Description rdf:about="%s">"""
             name="""<ECHONAVIGATION:name>%s</ECHONAVIGATION:name>"""              name="""<echonavigation:name>%s</echonavigation:name>"""
             link="""<ECHONAVIGATION:link xlink:href="%s">%s</ECHONAVIGATION:link>"""              link="""<echonavigation:link xlink:href="%s">%s</echonavigation:link>"""
             clickable="""<ECHONAVIGATION:linkClickable>%s</ECHONAVIGATION:linkClickable>"""              clickable="""<echonavigation:linkClickable>%s</echonavigation:linkClickable>"""
             #link="""<ECHONAVIGATION:link RDF:about="%s"/>"""              #link="""<echonavigation:link rdf:about="%s"/>"""
             type="""<ECHONAVIGATION:type>%s</ECHONAVIGATION:type>"""              type="""<echonavigation:type>%s</echonavigation:type>"""
             #xlink="""<ECHONAVIGATION:xlink xlink:href="%s"/>"""                      
               #xlink="""<echonavigation:xlink xlink:href="%s"/>"""      
               
               if ap=="":
                   ap2=""
               else:
                   ap2 = """<mpiwg:archive-path>%s</mpiwg:archive-path>"""%ap
               
             if not urn:              if not urn:
                     #urn="urn:"+re.sub('/',':',self.absolute_url())                      #urn="urn:"+re.sub('/',':',self.absolute_url())
                     urn=self.absolute_url()                      urn=self.absolute_url()
             about2=about%urn              about2=about%urn
             if not nameDef:              if not nameDef:
                     if hasattr(self,'label') and not (self.label==""):                      if hasattr(self,'label') and not (self.label==""):
                             name2=name%self.label                              name2=name%escape(self.label)
                     elif not self.title=="":                      elif not self.title=="":
                             name2=name%self.title                              name2=name%escape(self.title)
                     else:                      else:
                             name2=name%self.getId()                              name2=name%escape(self.getId())
   
                     name2=re.sub('&','&amp;',name2)                      name2=re.sub('&','&amp;',name2)
             else:              else:
Line 808  def getRDFDescription(self,linkURL,urn=N Line 883  def getRDFDescription(self,linkURL,urn=N
             else:              else:
                     type2=type%typeName                      type2=type%typeName
                           
             #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n</RDF:Description>"            
             ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n</RDF:Description>"  
               #ret=about2+"\n"+name2+"\n"+link2+"\n"+type2+"\n"+clickable2+"\n</rdf:Description>"
           try:
                   ret=about2+"\n"+name2+"\n"+type2+"\n"+clickable2+"\n"+ap2+"\n</rdf:Description>"
           except:
                   ret=self.unicodify(about2)+"\n"+self.unicodify(name2)+"\n"+self.unicodify(type2)+"\n"+self.unicodify(clickable2)+"\n"+self.unicodify(ap2)+"\n</rdf:Description>"
   
             return ret              return ret
           
 def getCopyrightsFromForm(self,argv):   def getCopyrightsFromForm(self,argv): 
Line 1001  def writeMetadata(url,metadict,project=N Line 1082  def writeMetadata(url,metadict,project=N
   
                 try:                  try:
                         dom=xml.dom.minidom.parseString(geturl)                          dom=xml.dom.minidom.parseString(geturl)
                           
                 except:                  except:
                     logger("ECHO writeMetadata",logging.ERROR,"Cannot parse: "+url+"<br>"+geturl)                      logger("ECHO writeMetadata",logging.ERROR,"Cannot parse: "+url+"<br>"+geturl)
                     return (None,"Cannot parse: "+url+"<br>"+geturl)                      return (None,"Cannot parse: "+url+"<br>"+geturl)
   
                   
           logging.debug("getting:"+geturl)
         metanodes=dom.getElementsByTagName('bib')          metanodes=dom.getElementsByTagName('bib')
   
         if not metanodes:          if not metanodes:
Line 1082  def readMetadata(url): Line 1164  def readMetadata(url):
     """Methode zum Auslesen der Metadateninformation zu einer Resource      """Methode zum Auslesen der Metadateninformation zu einer Resource
     Vorerst noch Typ bib"""      Vorerst noch Typ bib"""
           
       logging.debug("getting:" +url)
     metadict={}      metadict={}
           
     try:      try:
Line 1117  def readMetadata(url): Line 1200  def readMetadata(url):
                 try:                  try:
                         #print urllib.unquote(getText(node.childNodes)),getText(node.childNodes)                          #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())]=urllib.unquote(getText(node.childNodes))
                         metadict[re.sub('-','_',node.tagName.lower())]=getText(node.childNodes)                          metadict[node.tagName]=getText(node.childNodes)
                                   
                 except:                  except:
                         """nothing"""                          """nothing"""

Removed from v.1.91  
changed lines
  Added in v.1.104


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>