Diff for /ECHO_content/ECHO_resource.py between versions 1.3 and 1.7

version 1.3, 2009/04/14 16:31:27 version 1.7, 2012/01/03 13:02:31
Line 208  class ECHO_resource(CatalogAware,Folder, Line 208  class ECHO_resource(CatalogAware,Folder,
                     
                 
             ret=getRDFDescription(self,self.link,urn=urn,ap=ap)              ret=getRDFDescription(self,self.link,urn=urn,ap=ap)
             logging.debug("ret:"+repr(ret))             
             return ret+self.createSubElementRDF(urn=urn)               return ret+self.createSubElementRDF(urn=urn) 
   
       
Line 436  class ECHO_resource(CatalogAware,Folder, Line 436  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 455  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 621  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)
   
Line 654  class ECHO_resource(CatalogAware,Folder, Line 668  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 1072  class ECHO_resource(CatalogAware,Folder, Line 1077  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 1220  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 1233  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 1263  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 1295  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 1305  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 1332  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 1359  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 1458  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.3  
changed lines
  Added in v.1.7


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