Diff for /ECHO_content/ECHO_resource.py between versions 1.4 and 1.9

version 1.4, 2009/04/14 16:32:00 version 1.9, 2012/01/04 13:23:00
Line 71  class ECHO_resource(CatalogAware,Folder, Line 71  class ECHO_resource(CatalogAware,Folder,
           
 #    viewClassificationList=viewClassificationListMaster  #    viewClassificationList=viewClassificationListMaster
   
       
     def PrincipiaSearchSource(self):      def PrincipiaSearchSource(self):
            """Return cataloguable key for ourselves."""             """Return cataloguable key for ourselves."""
            return str(self)             return str(self)
Line 291  class ECHO_resource(CatalogAware,Folder, Line 292  class ECHO_resource(CatalogAware,Folder,
                           
                           
                           
       def getMetaLink(self):
           return self.metalink
   
       def setMetaLink(self,ml):
           self.metalink=ml
           return
           
     def getAccessRightMD(self):      def getAccessRightMD(self):
                 """set accessright"""                  """set accessright"""
Line 436  class ECHO_resource(CatalogAware,Folder, Line 443  class ECHO_resource(CatalogAware,Folder,
             """create ImageUrl"""              """create ImageUrl"""
   
                           
             resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')              resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path')
                           
             digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix')              digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix')
             images=readFieldFromXML(self.metalink,'texttool','image')              images=readFieldFromXML(self.metalink,'texttool','image')
Line 455  class ECHO_resource(CatalogAware,Folder, Line 462  class ECHO_resource(CatalogAware,Folder,
     def copyTitleToInfoXML(self,RESPONSE=None):      def copyTitleToInfoXML(self,RESPONSE=None):
             """copy title from the resource"""              """copy title from the resource"""
             presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')              presentationXML=readFieldFromXML(self.metalink,'texttool','presentation')
             resourcepath=readFieldFromXML(self.metalink,'resource','archive-path')              resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path')
             if (not presentationXML) or (not resourcepath):               if (not presentationXML) or (not resourcepath): 
                 if RESPONSE:                  if RESPONSE:
                         RESPONSE.write("Error: %s\n"%self.getId())                          RESPONSE.write("Error: %s\n"%self.getId())
Line 621  class ECHO_resource(CatalogAware,Folder, Line 628  class ECHO_resource(CatalogAware,Folder,
                     #logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink)                      #logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink)
                     dom=xml.dom.minidom.parse(fh)                      dom=xml.dom.minidom.parse(fh)
                     texttools=dom.getElementsByTagName('texttool')                      texttools=dom.getElementsByTagName('texttool')
                       
   
                       text=texttools[0].getElementsByTagName('text-url-path') #pfad auf text im neuen system
                       logging.debug(text);
                       if (text is not None) and len(text)>0:
                           texturl=getText(text[0].childNodes)
                           textBasisUrl=None
                           if hasattr(self,"getFullTextBasisUrl"):
                               textBasisUrl=self.getFullTextBasisUrl()
                           else: #default
                               textBasisUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s"
                           #Beispiel http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=/archimedes/la/achil_propo_087_la_1545.xml
                           logging.debug(textBasisUrl);
                           texturl=textBasisUrl%texturl
                       else:
                     text=texttools[0].getElementsByTagName('text')                      text=texttools[0].getElementsByTagName('text')
                     texturl=getText(text[0].childNodes)                      texturl=getText(text[0].childNodes)
   
                        #TODO: hack has to be romoved, if index.meta for annalen are changed!! (DW)
                if (texturl is not None) and (texturl.startswith("/mpiwg/online/permanent/einstein/annalen")):
                     texturl=texturl.replace("/mpiwg/online/permanent/einstein/annalen/","/diverse/de/") 
                                 splitted=texturl.split("/fulltext")
                                 texturl=splitted[0]+".xml"
                         if hasattr(self,"getFullTextBasisUrl"):
                                   textBasisUrl=self.getFullTextBasisUrl()
                         else: #default                                                                                                                            
                                   textBasisUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s"
                                   #Beispiel http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=/archimedes/la/achil_propo_087_la_1545.xml                                 
                                 logging.debug(textBasisUrl);
                                 texturl=textBasisUrl%texturl
                        
     
   
   
                     #logger("ECHO Fulltext",logging.INFO,"found %s"%texturl)                      #logger("ECHO Fulltext",logging.INFO,"found %s"%texturl)
                     fh.close()                      fh.close()
                     #logger("ECHO Fulltext",logging.INFO,"closed fh")                      #logger("ECHO Fulltext",logging.INFO,"closed fh")
Line 641  class ECHO_resource(CatalogAware,Folder, Line 679  class ECHO_resource(CatalogAware,Folder,
                     else:                      else:
                             return texturl                              return texturl
             except:              except:
               logging.debug(sys.exc_info()[0])
               logging.debug(sys.exc_info()[1])
               logging.debug(sys.exc_info()[2])
                     if not noredirect:                      if not noredirect:
                             self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')                              self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml')
                             self.REQUEST.RESPONSE.write("<error>no fulltext available</error>")                              self.REQUEST.RESPONSE.write("<error>no fulltext available</error>")
Line 654  class ECHO_resource(CatalogAware,Folder, Line 694  class ECHO_resource(CatalogAware,Folder,
           
     def getArchivePathFromMetadata(self):      def getArchivePathFromMetadata(self):
         try:          try:
             fh=ECHO_helpers.urlopen(self.metalink)              archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path")
             dom=xml.dom.minidom.parse(fh)              return archivePath
             archivePath=dom.getElementsByTagName('archive-path')  
             text = getText(archivePath[0].childNodes)  
             return text  
         except:          except:
             return ""              return ""
           
     def getImageView(self,noredirect=None,onlyPath=None):      def getImageView(self,noredirect=None,onlyPath=None):
             """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""              """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""
             try:              try:
                     fh=ECHO_helpers.urlopen(self.metalink)                      archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path")
                     dom=xml.dom.minidom.parse(fh)  
                     texttools=dom.getElementsByTagName('texttool')  
                     text=texttools[0].getElementsByTagName('image')  
                     imagetemp=getText(text[0].childNodes)  
                                           
                     text=dom.getElementsByTagName('archive-path')  
                     archivepath=getText(text[0].childNodes)  
                     archivepath=re.sub('/mpiwg/online/','',archivepath)                       archivepath=re.sub('/mpiwg/online/','',archivepath) 
                     imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp                      imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp
                     fh.close()                      fh.close()
Line 894  class ECHO_resource(CatalogAware,Folder, Line 925  class ECHO_resource(CatalogAware,Folder,
                   
         vl,msg=self.checkValidityOfMetaLink()          vl,msg=self.checkValidityOfMetaLink()
                   
   
   
   
         if not vl: #ungueltiger link, versuche neuen          if not vl: #ungueltiger link, versuche neuen
             newStr=re.match(".*/mpiwg/online/(.*)",self.metalink) # suche pfad hinter /mpiwg/online               newStr=re.match(".*/mpiwg/online/(.*)",self.metalink) # suche pfad hinter /mpiwg/online 
             oldLink=self.metalink              oldLink=self.metalink
Line 911  class ECHO_resource(CatalogAware,Folder, Line 945  class ECHO_resource(CatalogAware,Folder,
             logging.info("change Viewer (mew Metadatafile) %s"%self.metalink)              logging.info("change Viewer (mew Metadatafile) %s"%self.metalink)
                         
         if vl:          if vl:
   
             self.newViewer=newViewer              self.newViewer=newViewer
             return vl,msg              return vl,msg
         else:          else:
Line 1072  class ECHO_resource(CatalogAware,Folder, Line 1107  class ECHO_resource(CatalogAware,Folder,
                                           
   
                 #noch nicht gecached                      #noch nicht gecached    
                 if not fieldName and hasattr(self.standardMD,ct):                      if not fieldName and hasattr(self.getStandardMD(),ct):    
                     fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0]                      fieldName=getattr(self.getStandardMD(),ct).generateMappingHash()[fieldNameTest][0]
                     self._v_mapHash[ct][fieldNameTest]=fieldName                      self._v_mapHash[ct][fieldNameTest]=fieldName
             if not fieldName:              if not fieldName:
                 fieldName=fieldNameTest                    fieldName=fieldNameTest  
Line 1215  class ECHO_resource(CatalogAware,Folder, Line 1250  class ECHO_resource(CatalogAware,Folder,
   
     def getMetaDataHash(self):      def getMetaDataHash(self):
             """md hash"""              """md hash"""
             return self.metaDataHash             
               return getattr(self,'metaDataHash',{})
           
     def setFieldValue(self,field,value):      def setFieldValue(self,field,value):
         """get value"""          """get value"""
Line 1227  class ECHO_resource(CatalogAware,Folder, Line 1263  class ECHO_resource(CatalogAware,Folder,
   
     def copySearchFields(self):      def copySearchFields(self):
             """copys metadatafields to the object"""              """copys metadatafields to the object"""
             fields=['author','title','year']  
                           
               # Zunaechst die gnerischen felder
               fields=['author','title','year']
             for field in fields:              for field in fields:
                     setattr(self,'MD_'+field,self.getMDValue(field,generic="yes"))                      setattr(self,'MD_'+field,self.getMDValue(field,generic="yes"))
           
               # jetzt die spezifischen
               for field in self.getMetaDataHash().keys():
                       
                       if (not field is None) and (not (field in fields)):
                           logging.debug("ECHO_resource (copySearchFields) mapping: "+field)
                           logging.debug("ECHO_resource (copySearchFields) mapping value : "+self.getMDValue(field))
                           setattr(self,'MD_'+field,self.getMDValue(field))
       
               
                 
   
     def findLabelsFromMapping(self,referenceType):      def findLabelsFromMapping(self,referenceType):
         """gib hash mit label -> generic zurueck"""          """gib hash mit label -> generic zurueck"""
         #return {},[]          #return {},[]
   
         temp=self.ZopeFind(self.standardMD)          temp=self.ZopeFind(self.getStandardMD())
   
         if referenceType=="":          if referenceType=="":
                 referenceType="book"                  referenceType="book"
Line 1246  class ECHO_resource(CatalogAware,Folder, Line 1293  class ECHO_resource(CatalogAware,Folder,
         bibdata={}          bibdata={}
         retdata={}          retdata={}
         fields=[]          fields=[]
         fieldlist=self.standardMD.fieldList          fieldlist=self.getStandardMD().fieldList
   
         tags=self.findTagsFromMapping(normalizeCt(self.contentType))          tags=self.findTagsFromMapping(normalizeCt(self.contentType))
           logging.debug("ECHO_resource(findLabelsFromMapping)"+repr(tags))
         self.referencetypes=tags[2]          self.referencetypes=tags[2]
         for referenceTypeF in self.referencetypes:          for referenceTypeF in self.referencetypes:
                                   
                                   logging.debug("--- compare"+normalizeCt(referenceTypeF[1].title)+normalizeCt(referenceType.lower()))
                 if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):                  if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):
   
                         try:                          try:
                                 bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields                                  bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields()
                                 referenceType=referenceTypeF[1].title                                  referenceType=referenceTypeF[1].title
                                   logging.debug("------fields:"+repr(bibdata[referenceTypeF[1].title]))
                         except:                          except:
                                 bibdata[referenceType]=referenceTypeF[1].fields                                  bibdata[referenceType]=referenceTypeF[1].getUsedFields()
                                   
   
                         bibdata['data']=referenceTypeF[1]                          bibdata['data']=referenceTypeF[1]
Line 1276  class ECHO_resource(CatalogAware,Folder, Line 1325  class ECHO_resource(CatalogAware,Folder,
         if referenceType=="":          if referenceType=="":
                 referenceType="book"                  referenceType="book"
                   
         temp =  self.ZopeFind(self.standardMD)[0:]          temp =  self.ZopeFind(self.getStandardMD())[0:]
   
                   
         #self.referencetypes=temp[0:]          #self.referencetypes=temp[0:]
Line 1286  class ECHO_resource(CatalogAware,Folder, Line 1335  class ECHO_resource(CatalogAware,Folder,
   
         bibdata={}          bibdata={}
         retdata={}          retdata={}
         fieldlist=self.standardMD.fieldList          fieldlist=self.getStandardMD().fieldList
         fields=[]          fields=[]
         for referenceTypeF in temp:          for referenceTypeF in temp:
                 #print referenceType                  #print referenceType
                   
                 if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):                  if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()):
                         try:                          try:
                                 bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields                                  bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields()
                                 referenceType=referenceTypeF[1].title                                  referenceType=referenceTypeF[1].title
                         except:                          except:
                                 bibdata[referenceType]=referenceTypeF[1].fields                                  logging.debug("Error in ECHOresource(findTagsFromMapping): %s %s"%(sys.exc_info()[0],sys.exc_info()[1]))
                                   logging.debug(referenceTypeF)
                                   #TODO:CCCC
                                   bibdata[referenceType]=referenceTypeF[1].getUsedFields()
                         bibdata['data']=referenceTypeF[1]                          bibdata['data']=referenceTypeF[1]
                         fields=bibdata[referenceType]                          fields=bibdata[referenceType]
                         for field in fieldlist:                          for field in fieldlist:
Line 1310  class ECHO_resource(CatalogAware,Folder, Line 1362  class ECHO_resource(CatalogAware,Folder,
             """copy MD von Index_meta to the echo_resource"""              """copy MD von Index_meta to the echo_resource"""
                           
             (metadict, error)=readMetadata(self.metalink)              (metadict, error)=readMetadata(self.metalink)
               logging.debug(metadict)
   
                           
             self.metaDataHash={}              self.metaDataHash={}
             if not error=="": #Fehler beim Auslesen des Metafiles              if not error=="": #Fehler beim Auslesen des Metafiles
Line 1338  class ECHO_resource(CatalogAware,Folder, Line 1389  class ECHO_resource(CatalogAware,Folder,
     def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"):      def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"):
         """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""          """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource"""
         (metadict, error)=readMetadata(self.metalink)          (metadict, error)=readMetadata(self.metalink)
                   logging.debug("METADICT:")
           logging.debug(metadict)
         if back:          if back:
             self.REQUEST.SESSION['back']=back              self.REQUEST.SESSION['back']=back
   
Line 1436  class ECHO_resource(CatalogAware,Folder, Line 1488  class ECHO_resource(CatalogAware,Folder,
   
     def generate_label(self):      def generate_label(self):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower())  
   
         self.label=pt()[0:]          templateName="label_template_"+normalizeCt(self.contentType).lower();
           if hasattr(self, templateName):
               pt=getattr(self,templateName)
               self.title=pt()[0:]
         return pt()          return pt()
           else:
               pt=getattr(self.metadata,templateName)
               
               mdHash={}
               #mdHash={"author":self.getMDValue('author'),"title":self.getMDValue('title'),"year":self.MD_year}
               #logging.debug(mdHash)
               logging.debug("new format for template")
               fields=['author','title','year']
               
               for field in fields:
                   mdHash[field]=self.getMDValue(field);
                       
               # jetzt die spezifischen
               for field in self.getMetaDataHash().keys():
                       
                       if (not field is None) and (not (field in fields)):
   
                           logging.debug(field)
                           mdHash[field]=self.getMDValue(field);
       
               
               self.title=pt(md=mdHash)[0:]
               return pt(md=mdHash)[0:]
           
           
           
   
     security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination      security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination
   
     def generate_title(self,RESPONSE=None):      def generate_title(self,RESPONSE=None):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower())  
   
         self.title=pt()[0:]  
                   
           templateName="label_template_"+normalizeCt(self.contentType).lower();
           if hasattr(self, templateName):
               pt=getattr(self,templateName)
               self.title=pt()[0:]
         return pt()          return pt()
           else:
               pt=getattr(self.metadata,templateName)
               
               mdHash={}
               #mdHash={"author":self.getMDValue('author'),"title":self.getMDValue('title'),"year":self.MD_year}
               #logging.debug(mdHash)
               logging.debug("new format for template")
               fields=['author','title','year']
               
               for field in fields:
                   mdHash[field]=self.getMDValue(field);
                       
               # jetzt die spezifischen
               for field in self.getMetaDataHash().keys():
                       
                       if (not field is None) and (not (field in fields)):
   
                           logging.debug(field)
                           mdHash[field]=self.getMDValue(field);
       
               
               self.title=pt(md=mdHash)[0:]
               return pt(md=mdHash)[0:]
           
           
           
   
 Globals.InitializeClass(ECHO_resource)  Globals.InitializeClass(ECHO_resource)
   

Removed from v.1.4  
changed lines
  Added in v.1.9


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