Diff for /ECHO_content/ECHO_resource.py between versions 1.6.2.1 and 1.6.2.5

version 1.6.2.1, 2011/10/13 07:48:27 version 1.6.2.5, 2012/08/29 07:53:31
Line 1 Line 1
 #TODO: change metaDataHash, jetzt tag -> data(tags aus dem neuen Metadatamain)  #TODO: change metaDataHash, jetzt tag -> data(tags aus dem neuen Metadatamain)
 #TODO: erstes OSAS_meta ueberall durch self.metaDataHAst  
 #TODO: contentType aus den Metadaten  #TODO: contentType aus den Metadaten
   
 import urlparse  import urlparse
Line 62  from ECHO_helpers import * Line 61  from ECHO_helpers import *
   
   
 from ECHO_movie import *  from ECHO_movie import *
 import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen  #import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen
 import xmlrpclib  import xmlrpclib
   
 import logging  import logging
Line 83  class ECHO_resource(CatalogAware,Folder, Line 82  class ECHO_resource(CatalogAware,Folder,
   
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
           
     def getMetaDataManager(self):  #    def getMetaDataManager(self):
          """hole eine Instanz von MetaDataFolder  #        """hole eine Instanz von MetaDataFolder
          TODO: sollte konfigurierbar sein.   #        TODO: sollte konfigurierbar sein. 
          zur Zeit wird enfach nur self.metadata falls vorhanden zurueckggegeben.  #        zur Zeit wird enfach nur self.metadata falls vorhanden zurueckggegeben.
          """  #        """
            #   
          return getattr(self,"metadata",None)  #        mf= getattr(self,"metadataFolder",None)
   #        #logging.debug("MetadataManager:"+repr(mf))
   #        return mf
   #        
   
     def index_meta(self,RESPONSE=None):      def index_meta(self,RESPONSE=None):
         """ gibt das im metalink gespeicher xml-file zurueck"""          """ gibt das im metalink gespeicher xml-file zurueck"""
Line 133  class ECHO_resource(CatalogAware,Folder, Line 135  class ECHO_resource(CatalogAware,Folder,
         self.reindex_object()          self.reindex_object()
       
       
     security.declareProtected('View','createPDF')  
     def createPDF(self,RESPONSE=None,local=None,dpi=150):  
             """erzeuge pdf file"""  
             pages=1  
             dpi=float(dpi)  
             imagePath=self.getImagePath().replace("/mpiwg/online","")  
               
               
             image="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler?fn="+imagePath+"&dw=%i&dh=%i&pn=%i"  
             xmlInfo="http://nausikaa2.mpiwg-berlin.mpg.de/digitallibrary/dlInfo-xml.jsp?fn="+imagePath  
   
             dom=xml.dom.minidom.parse(urllib.urlopen(xmlInfo))  
             for parameter in dom.getElementsByTagName('parameter'):  
                     if parameter.getAttribute('name')=="pt":  
                             pages=int(parameter.getAttribute('value'))  
                             break  
               
   
             tempdir="/tmp/archivesImageServer"  
             if not os.path.exists(tempdir):  
                     os.mkdir(tempdir)   
     
             tmpPath=tempfile.mkdtemp(dir=tempdir)  
               
   
             tmpZip=tempfile.mktemp(dir=tempdir)  
   
             tmpFn=os.path.split(tmpZip)[1]  
   
   
       
   
             if RESPONSE:  
                     RESPONSE.setHeader("Content-Type","text/html")  
                     RESPONSE.write("<h1>I am creating  the pdf</h1>")  
                     txt="<h3>1. step: getting the images( %i pages)</h3>"%pages  
                     RESPONSE.write(txt)  
   
             c=canvas.Canvas(tmpZip)  
             for i in range(1,pages+1):  
                     if RESPONSE:  
                             RESPONSE.write(str("<p>Get Page: %i<br>\n"%i))  
                     faktor=dpi/72.0  
                       
                     fn=tmpPath+"/%i"%i  
   
                     width,height=A4  
                     #print image%(width*faktor,height*faktor,i)  
                     url=urllib.urlopen(image%(width*faktor,height*faktor,i)).read()  
                     fh=file(fn,"w")  
                     fh.write(url)  
                     fh.close()  
   
       
   
                     c.drawImage(fn,0,0,width=width,height=height)  
                     c.showPage()  
             c.save()  
             if RESPONSE:  
                     RESPONSE.write("<p>finished<br>\n")  
   
             if RESPONSE:  
                     len=os.stat(tmpZip)[6]  
                     downloadUrl=self.absolute_url()+"/downloadPDF"  
                     RESPONSE.write("""<h1><a href="downloadPDF?fn=%s">Click here for download ( %i Byte)</a></h1>\n"""%(tmpFn,len))  
                     RESPONSE.write("""<p>The file will be stored for a while, you can download it later, the URL is:</p>  
                     <p><a href="downloadPDF?fn=%s">%s?fn=%s</a></h1>\n"""%(tmpFn,downloadUrl,tmpFn))  
                     RESPONSE.close()  
   
   
     def downloadPDF(self,fn):  
             """download prepared set"""  
             filename="/tmp/archivesImageServer/"+fn  
             namePDF=self.getId()+".pdf"  
             self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%namePDF)  
             self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")  
             len=os.stat(filename)[6]  
             self.REQUEST.RESPONSE.setHeader("Content-Length",len)  
             images=file(filename).read()  
             self.REQUEST.RESPONSE.write(images)  
             self.REQUEST.RESPONSE.close()  
   
   
     def getRDF(self,urn=None):      def getRDF(self,urn=None):
Line 486  class ECHO_resource(CatalogAware,Folder, Line 407  class ECHO_resource(CatalogAware,Folder,
   
                           
   
     def changeViewerTemplateSetForm(self):  
             """change the viewer template set"""  
             pt=zptFile(self, 'zpt/changeResourceViewerTemplateSet')  
             return pt()  
   
   
     def setLink(self, link=None):      def setLink(self, link=None):
Line 676  class ECHO_resource(CatalogAware,Folder, Line 593  class ECHO_resource(CatalogAware,Folder,
             return []              return []
   
   
     def getStorageManagerResourceURL(self):  #    def getStorageManagerResourceURL(self):
         """get the link to storage"""  #        """get the link to storage"""
         urlbase=self.getStorageManagerURL();  #        urlbase=self.getStorageManagerURL();
           #        
         #now get the path from the metadatalink  #        #now get the path from the metadatalink
           #        
         path = self.correctPath(self.getMetaDataLink())  #        path = self.correctPath(self.getMetaDataLink())
         if path is None:  #        if path is None:
             return ""  #            return ""
         else:  #        else:
             path=path.replace("index.meta","")  #            path=path.replace("index.meta","")
             return urlbase+path  #            return urlbase+path
           #        
                   
     def correctPath(self,path):      def correctPath(self,path):
         #take only the path of the url which starts with /permanent or /experimental          #take only the path of the url which starts with /permanent or /experimental
Line 921  class ECHO_resource(CatalogAware,Folder, Line 838  class ECHO_resource(CatalogAware,Folder,
     def getMDValueSimpleSearchField(self):      def getMDValueSimpleSearchField(self):
             """returns value for simple search aus DC daten"""              """returns value for simple search aus DC daten"""
                           
                           try:
             bibdata=self.getMetaDataManager().getBibData(path=self.getMetaDataLink())              bibdata=self.getMetaDataManager().getBibData(path=self.getMetaDataLink())
             dcMapped = self.getMetaDataManager().getDCMappedData(bibdata)              dcMapped = self.getMetaDataManager().getDCMappedData(bibdata)
             logging.debug("getMDValueSimpleSearchField:"+ repr(dcMapped))              logging.debug("getMDValueSimpleSearchField:"+ repr(dcMapped))
Line 929  class ECHO_resource(CatalogAware,Folder, Line 846  class ECHO_resource(CatalogAware,Folder,
                              dcMapped.get('creator',''),                               dcMapped.get('creator',''),
                              dcMapped.get('year',''),self.getTitle()])                               dcMapped.get('year',''),self.getTitle()])
                         
               except:
                   logging.error("getMDValueSimpleSearchField doesn't work:"+self.getId())
   
   
     def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None):      def newMetaXML(self,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,digiliburlprefix=None):
Line 1001  class ECHO_resource(CatalogAware,Folder, Line 920  class ECHO_resource(CatalogAware,Folder,
         {'label':'Main Config','action':'ECHO_resource_config_main'},          {'label':'Main Config','action':'ECHO_resource_config_main'},
         {'label':'Edit Metadata','action':'ECHO_getResourceMD'},          {'label':'Edit Metadata','action':'ECHO_getResourceMD'},
         {'label':'Graphic Coords','action':'ECHO_graphicEntry'},          {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
         {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'},  
         {'label':'set/change startpage','action':'setStartPageForm'},          {'label':'set/change startpage','action':'setStartPageForm'},
         {'label':'Change AccessRights','action':'changeAccessRightForm'},           {'label':'Change AccessRights','action':'changeAccessRightForm'}, 
         ) + Folder.manage_options          ) + Folder.manage_options
Line 1050  class ECHO_resource(CatalogAware,Folder, Line 968  class ECHO_resource(CatalogAware,Folder,
                           
             return              return
                   
       def getDRI(self,type="escidoc"):
           """get DRI"""
           try:
               dri = self.getMetaDataManager().getDRI(path=self.metalink,type=type)
           except:
               return None
           
           return dri
           
     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)
Line 1085  class ECHO_resource(CatalogAware,Folder, Line 1012  class ECHO_resource(CatalogAware,Folder,
 #        """Ausgabe der MD"""  #        """Ausgabe der MD"""
 #        return getattr(self,item)  #        return getattr(self,item)
   
     def checkRDF(self,path):      def checkPDF(self,path):
             """check if pdf in the path"""              """check if pdf in the path"""
             try:              try:
                     for fileName in os.listdir(path):                      for fileName in os.listdir(path):
Line 1099  class ECHO_resource(CatalogAware,Folder, Line 1026  class ECHO_resource(CatalogAware,Folder,
     security.declareProtected('View','index_html')      security.declareProtected('View','index_html')
     def index_html(self):      def index_html(self):
         """standard page"""          """standard page"""
         pdf=self.checkRDF(self.link)          pdf=self.checkPDF(self.link)
         if pdf:          if pdf:
                 fh=file(pdf,'r').read()                  fh=file(pdf,'r').read()
                 self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf')                  self.REQUEST.RESPONSE.setHeader('Content-Type','application/pdf')
Line 1141  class ECHO_resource(CatalogAware,Folder, Line 1068  class ECHO_resource(CatalogAware,Folder,
                     return sp[0][1]()                      return sp[0][1]()
   
   
     security.declarePublic('generate_label') # has to be change, presentlyset because of OSAS koordination      security.declarePublic('generate_label') 
   
     def generate_label(self):      def generate_label(self):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
Line 1149  class ECHO_resource(CatalogAware,Folder, Line 1076  class ECHO_resource(CatalogAware,Folder,
         return self.label          return self.label
                   
   
     security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination      security.declarePublic('generate_title') 
   
     def generate_title(self,RESPONSE=None):      def generate_title(self,RESPONSE=None):
         """Erzeugt_standard_Label aus Template"""          """Erzeugt_standard_Label aus Template"""
         self.title=self.generate_label();          self.title=self.generate_label();

Removed from v.1.6.2.1  
changed lines
  Added in v.1.6.2.5


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