Diff for /ECHO_content/ECHO_resource.py between versions 1.1 and 1.8

version 1.1, 2008/12/04 21:27:00 version 1.8, 2012/01/04 11:21:10
Line 23  from Globals import Persistent, package_ Line 23  from Globals import Persistent, package_
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
 from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon  from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon
   try:
 from Products.MetaDataProvider.MetaDataClient import MetaDataClient  from Products.MetaDataProvider.MetaDataClient import MetaDataClient
   except:
       print "no metadata services"
 import urllib  import urllib
 import urllib2  import urllib2
 import cgi  import cgi
Line 68  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 201  class ECHO_resource(CatalogAware,Folder, Line 205  class ECHO_resource(CatalogAware,Folder,
   
     def getRDF(self,urn=None):      def getRDF(self,urn=None):
             """rdf"""              """rdf"""
             ret=getRDFDescription(self,self.link,urn=urn)              ap = self.getArchivePathFromMetadata()
            
          
               ret=getRDFDescription(self,self.link,urn=urn,ap=ap)
              
             return ret+self.createSubElementRDF(urn=urn)               return ret+self.createSubElementRDF(urn=urn) 
   
       
Line 284  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 429  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 448  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 614  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)
   
Line 645  class ECHO_resource(CatalogAware,Folder, Line 673  class ECHO_resource(CatalogAware,Folder,
             """gibt pfad zum image aus"""              """gibt pfad zum image aus"""
             return self.getImageView(noredirect="yes",onlyPath="yes")              return self.getImageView(noredirect="yes",onlyPath="yes")
           
       def getArchivePathFromMetadata(self):
           try:
               archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path")
               return archivePath
           except:
               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 877  class ECHO_resource(CatalogAware,Folder, Line 906  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 894  class ECHO_resource(CatalogAware,Folder, Line 926  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 1055  class ECHO_resource(CatalogAware,Folder, Line 1088  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 1198  class ECHO_resource(CatalogAware,Folder, Line 1231  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 1210  class ECHO_resource(CatalogAware,Folder, Line 1244  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 1229  class ECHO_resource(CatalogAware,Folder, Line 1274  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 1259  class ECHO_resource(CatalogAware,Folder, Line 1306  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 1269  class ECHO_resource(CatalogAware,Folder, Line 1316  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 1293  class ECHO_resource(CatalogAware,Folder, Line 1343  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 1321  class ECHO_resource(CatalogAware,Folder, Line 1370  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 1419  class ECHO_resource(CatalogAware,Folder, Line 1469  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.1  
changed lines
  Added in v.1.8


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