Diff for /ECHO_content/ECHO_collection.py between versions 1.310.2.3 and 1.313

version 1.310.2.3, 2012/01/16 18:57:50 version 1.313, 2012/01/04 11:21:10
Line 9  class ECHO_externalLink contains informa Line 9  class ECHO_externalLink contains informa
   
   
 """  """
   try:
           from reportlab.pdfgen import canvas
           from reportlab.lib.pagesizes import A4
   except:
           print "PDF generation will not work"
             
 import urlparse  import urlparse
 import string  import string
Line 17  import tempfile Line 21  import tempfile
 import zipfile  import zipfile
 import re  import re
 import os,shutil  import os,shutil
   import traceback
 import OFS.Image  import OFS.Image
 from types import *  from types import *
 from OFS.Cache import Cacheable  from OFS.Cache import Cacheable
Line 45  import urllib2 Line 50  import urllib2
 import cgi  import cgi
 import smtplib  import smtplib
 import time  import time
 #from Ft.Xml.Domlette import NonvalidatingReader  from Ft.Xml.Domlette import NonvalidatingReader
 #from Ft.Xml.Domlette import PrettyPrint, Print  from Ft.Xml.Domlette import PrettyPrint, Print
 #from Ft.Xml import EMPTY_NAMESPACE  from Ft.Xml import EMPTY_NAMESPACE
 #  
 #import Ft.Xml.XPath  import Ft.Xml.XPath
 import cStringIO  import cStringIO
   
 import sys  import sys
Line 913  class ECHO_collection(CatalogAware, Fold Line 918  class ECHO_collection(CatalogAware, Fold
                 pt.content_type="text/html"                  pt.content_type="text/html"
                 return pt()                  return pt()
   
       def changeMetaLinks(self):
                   """change form"""
                   pt=zptFile(self, 'zpt/changeMetaLinkForm')
                   pt.content_type="text/html"
                   return pt()
   
     def changeTitles(self):      def changeTitles(self):
                 """change form"""                  """change form"""
                 pt=zptFile(self, 'zpt/changeTitleForm')                  pt=zptFile(self, 'zpt/changeTitleForm')
Line 1033  class ECHO_collection(CatalogAware, Fold Line 1044  class ECHO_collection(CatalogAware, Fold
                             pass                              pass
             return ret              return ret
                 
     def importCollection(self,path=None,viewerUrl=None,metaDataUrl=None,replacePathPermanent=None,replacePathExperimental=None,RESPONSE=None):      def changeMetaLinksInCollection(self):
               """change all lables of a collection"""
               ret=""
               argv=self.REQUEST.form
               
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_movie','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
               for resource in resources:
                      
                       try:
                               ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].metalink=argv[resource[1].getId()][0:]
                       except:
                               pass
               return ret
          
       def importCollection(self,path=None,viewerUrl=None,metaDataUrl=None,replacePathPermanent=None,replacePathExperimental=None,folderListFile=None,RESPONSE=None):
         """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""          """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner"""
                   
         if path is None:          if (path is None) & (folderListFile is None):
                 pt=zptFile(self, 'zpt/importCollection.zpt')                  pt=zptFile(self, 'zpt/importCollection.zpt')
                 return pt()                  return pt()
   
           
           
           if (path !=""):
         files=os.listdir(path)          files=os.listdir(path)
               pathToFolder=path;
           else:
               pathToFolder="";
               files=[];
               for fileLine in folderListFile.readlines():
                   for fileLine2 in fileLine.split("\r"):
                       logging.debug("append:"+fileLine2)
                       files.append(fileLine2)
           
         ret=""          ret=""
         for fileName in files:          for fileName in files:
                           
             if fileName:              if fileName:
                   logging.debug("split:"+fileName);
                   if(pathToFolder==""): # pfad ist leer, da filename aud folderlistfile dann:
                       splitted=fileName.split("/");
                       path="/".join(splitted[0:-1]);
                       fileName=splitted[-1].rstrip().lstrip();
                       
                   
                                   
                 if (replacePathExperimental and replacePathExperimental!=''):                  if (replacePathExperimental and replacePathExperimental!=''):
                     path=re.sub(replacePathExperimental,"/mpiwg/online/experimental",path)                      path=re.sub(replacePathExperimental,"/mpiwg/online/experimental",path)
Line 1054  class ECHO_collection(CatalogAware, Fold Line 1099  class ECHO_collection(CatalogAware, Fold
                                 
                 link=viewerUrl%(path+"/"+fileName+"/pageimg")                  link=viewerUrl%(path+"/"+fileName+"/pageimg")
                                   
                 metalink=metaDataUrl+"/"+path+"/"+fileName+"/index.meta"                  metalink=metaDataUrl+re.sub("/mpiwg/online/","",path+"/"+fileName+"/index.meta")
                   
                   #metalink=metaDataUrl+"/"+path+"/"+fileName+"/index.meta"
                   
                   newindexMeta =re.sub("/mpiwg/online/","",path+"/"+fileName)
                   
                 try:                  try:
                       type=self.metadata.getBibTypeFromIndexMeta(newindexMeta)
   
                         #link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb"                      try:
                                                   
                         newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'','book','','','','','','')                              #link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb"
                               logging.debug("create:"+fileName);
                               logging.debug("type:"+type);
                               newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'',type,'','','','','','')
                         self._setObject(fileName,newObj)                          self._setObject(fileName,newObj)
                                   
                         genObj=getattr(self,fileName)                          genObj=getattr(self,fileName)
                         #genObj.createIndexFile()                          #genObj.createIndexFile()
                         ret+="OK:"+fileName+"<br/>"                          ret+="OK:"+fileName+"<br/>"
                 except:                  except:
                         print "ERROR"                              exc_type, exc_value, exc_traceback = sys.exc_info();    
                               #logging.error("%s %s %s"%[sys.exc_info()[0],ssys.exc_info()[1],;
                               traceback.print_exception(exc_type, exc_value, exc_traceback,
                                     limit=2, file=sys.stdout)
                         ret+="ERROR:"+fileName+"<br/>"                          ret+="ERROR:"+fileName+"<br/>"
                   except:
                        exc_type, exc_value, exc_traceback = sys.exc_info();    
                        #logging.error("%s %s %s"%[sys.exc_info()[0],ssys.exc_info()[1],;
                        traceback.print_exception(exc_type, exc_value, exc_traceback,
                                     limit=2, file=sys.stdout)
                        ret+="not a file ERROR:"+fileName+"<br/>"
   
         return ret          return ret
   
Line 1116  class ECHO_collection(CatalogAware, Fold Line 1179  class ECHO_collection(CatalogAware, Fold
                     RESPONSE.write("<html><body>")                      RESPONSE.write("<html><body>")
   
         for resource in resources:          for resource in resources:
               resource[1].newViewer=newViewer;
                           
             done,msg=resource[1].changeViewer(newViewer)  #             done,msg=resource[1].changeViewer(newViewer)
             if done:  #             if done:
                 if RESPONSE is not None:  #                 if RESPONSE is not None:
                     RESPONSE.write("<p>OK: %s"%resource[0])  #                     RESPONSE.write("<p>OK: %s"%resource[0])
             else:  #             else:
                 if RESPONSE is not None:  #                 if RESPONSE is not None:
                     RESPONSE.write("<p><a href='%s'>ERROR: %s (%s)</a>"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg))  #                     RESPONSE.write("<p><a href='%s'>ERROR: %s (%s)</a>"%(resource[1].absolute_url()+'/ECHO_resource_config_main',resource[0],msg))
                                   
   
                                   
Line 1131  class ECHO_collection(CatalogAware, Fold Line 1195  class ECHO_collection(CatalogAware, Fold
                     RESPONSE.write("<p>Done</p></body></html>")                      RESPONSE.write("<p>Done</p></body></html>")
   
     
       def setStartpageFolderForm(self):
               """Form for changing the startpage"""
   
               
               pt=zptFile(self, 'zpt/ChangeECHO_resourceStartPageFolder.zpt')
               pt.content_type="text/html"
               return pt()
       
       def setStartpageFolder(self,startpage=None,RESPONSE=None):
               """change the templates"""
   
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
   
               for resource in resources:
   
                       resource[1].setStartPage(startpage)
   
               if RESPONSE is not None:
                       RESPONSE.redirect('manage_main')
   
     def copyTitleToInfoXMLFolder(self,RESPONSE=None):      def copyTitleToInfoXMLFolder(self,RESPONSE=None):
             """copy title into the title field of info.xml              """copy title into the title field of info.xml
Line 1165  class ECHO_collection(CatalogAware, Fold Line 1248  class ECHO_collection(CatalogAware, Fold
             if RESPONSE is not None:              if RESPONSE is not None:
                     RESPONSE.redirect('manage_main')                      RESPONSE.redirect('manage_main')
                                           
       def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
               """warning"""
               pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt')
               pt.content_type="text/html"
               return pt()
   
       def reloadMetaDataFromStorage(self,RESPONSE=None):
               """copy metadata from the storage to ECHO"""
   
               return reloadMetaDataFromStorage(self,RESPONSE)
     
           
     def getPartnerCopyright(self,name,sonst="generic"):      def getPartnerCopyright(self,name,sonst="generic"):
Line 1392  class ECHO_collection(CatalogAware, Fold Line 1485  class ECHO_collection(CatalogAware, Fold
         {'label':'Main Config','action':'ECHO_collection_config'},          {'label':'Main Config','action':'ECHO_collection_config'},
         {'label':'Change Labels','action':'changeLabels'},          {'label':'Change Labels','action':'changeLabels'},
         {'label':'Change Titles','action':'changeTitles'},          {'label':'Change Titles','action':'changeTitles'},
       {'label':'Change MetaLinks','action':'changeMetaLinks'},
         {'label':'Localize','action':'localizeObjects'},          {'label':'Localize','action':'localizeObjects'},
         {'label':'Change Weights','action':'changeWeights'},          {'label':'Change Weights','action':'changeWeights'},
         {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},          {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},
         {'label':'Export/Import Objects','action':'exportImportObjects_html'},          {'label':'Export/Import Objects','action':'exportImportObjects_html'},
         {'label':'Graphic Coords','action':'ECHO_graphicEntry'},          {'label':'Graphic Coords','action':'ECHO_graphicEntry'},
         {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},          {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
         {'label':'Change Viewer Templates and Image Viewer','action':'changeViewerTemplateSetsForm'},          {'label':'Set Startpage','action':'setStartpageFolderForm'},
           {'label':'Change Image Viewer','action':'changeViewerTemplateSetsForm'},
           {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
         {'label':'ImportCollection','action':'importCollection'},          {'label':'ImportCollection','action':'importCollection'},
           {'label':'Copy MD for indexing and search','action':'copySearchFields'},
         {'label':'Change access rights',  'action':'changeAccessRightsCollectionForm'},          {'label':'Change access rights',  'action':'changeAccessRightsCollectionForm'},
         )          )
   
Line 1458  class ECHO_collection(CatalogAware, Fold Line 1555  class ECHO_collection(CatalogAware, Fold
           
     def showOverview(self):      def showOverview(self):
         """overview"""          """overview"""
         # use ECHO_overview.html template in this instance          # ECHO_overview.html template for this instance
         if 'ECHO_overview.html' in self:          if 'ECHO_overview.html' in self.__dict__.keys():
             return self['ECHO_overview.html']()              return getattr(self,'ECHO_overview.html')()
                   
         # use ECHO_overview_main template in path          # ECHO_overview_main template in path
         if hasattr(self, 'ECHO_overview_main'):          if hasattr(self, 'ECHO_overview_main'):
             return getattr(self, 'ECHO_overview_main')()              return getattr(self, 'ECHO_overview_main')()
                   
         # use template from Product          # template from product
         pt=zptFile(self, 'zpt/ECHO_content_overview.zpt')          pt=zptFile(self, 'zpt/ECHO_content_overview.zpt')
         return pt()          return pt()
   
Line 1475  class ECHO_collection(CatalogAware, Fold Line 1572  class ECHO_collection(CatalogAware, Fold
     def index_html(self):      def index_html(self):
         """standard page"""          """standard page"""
         if self.ZCacheable_isCachingEnabled():          if self.ZCacheable_isCachingEnabled():
               
             result = self.ZCacheable_get()              result = self.ZCacheable_get()
             if result is not None:              if result is not None:
                 # Got a cached value.                  # Got a cached value.
                 return result                  return result
                           
         # old Zope 2.9 method          if 'index.html' in self.__dict__.keys():
         #if 'index.html' in self.__dict__.keys():              ret=getattr(self,'index.html')()
         #    ret=getattr(self,'index.html')()  
   
         # use Zope 2.12 IContainer for child access  
         if 'index.html' in self:  
             # use index.html template if it exists  
             ret = self['index.html']()  
                           
         elif 'overview' in self:          elif 'overview' in self.__dict__.keys():
             # use red-rectangle template when there's an 'overview'  
             ret=self.showOverview()              ret=self.showOverview()
   
         # use getattr for acquisition  
         elif hasattr(self,'collection_index_template'):          elif hasattr(self,'collection_index_template'):
             # use 'collection_index_template' in acquisition path  
             ret=self.collection_index_template()              ret=self.collection_index_template()
               
         elif hasattr(self,'main_index_template'):          elif hasattr(self,'main_index_template'):
             # use 'main_index_template' in acquisition path  
             ret=self.main_index_template.__of__(self)(self.main_template)  
                           
               ret=self.main_index_template.__of__(self)(self.main_template)
         else:          else:
             # use template from Product  
             pt=zptFile(self, 'zpt/ECHO_main_index_template_standard.zpt')              pt=zptFile(self, 'zpt/ECHO_main_index_template_standard.zpt')
             pt.content_type="text/html"              pt.content_type="text/html"
             ret=pt.render()              ret=pt.render()
Line 1892  class ECHO_root(Folder,Persistent,Implic Line 1977  class ECHO_root(Folder,Persistent,Implic
     getSubCols = ECHO_helpers.getSubCols      getSubCols = ECHO_helpers.getSubCols
   
     manage_options=Folder.manage_options+(      manage_options=Folder.manage_options+(
                 {'label':'Main Config','action':'ECHO_copyright_configForm'},                  {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
                 {'label':'Change Weights','action':'changeWeights'},                  {'label':'Change Weights','action':'changeWeights'},
                 {'label':'Generate from RDF','action':'generateFromRDFForm'},                  {'label':'Generate from RDF','action':'generateFromRDFForm'},
                 {'label':'update Resource Catalog','action':'updateResourceCatalog'},                  {'label':'update Resource Catalog','action':'updateResourceCatalog'},
                   {'label':'Copy MD for indexing and search','action':'copySearchFields'},
                )                 )
   
   
Line 1907  class ECHO_root(Folder,Persistent,Implic Line 1993  class ECHO_root(Folder,Persistent,Implic
     def getECHORoot(self):      def getECHORoot(self):
         return self          return self
           
       def copySearchFields(self,RESPONSE=None):
               """copys < metadatafields to the object"""
               resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1)
   
               for resource in resources:
   
                       resource[1].copySearchFields()
   
               if RESPONSE is not None:
                       RESPONSE.redirect('manage_main')
         
     def mod_re_sub(self,pattern,replace,string):      def mod_re_sub(self,pattern,replace,string):
         """re.sub aus mod re zur Verfuegung stellen"""          """re.sub aus mod re zur Verfuegung stellen"""
Line 2153  class ECHO_root(Folder,Persistent,Implic Line 2248  class ECHO_root(Folder,Persistent,Implic
                 return pt()                  return pt()
       
           
       def reloadMetaDataFromStorageWarning(self,RESPONSE=None):
               """warning"""
               pt=zptFile(self, 'zpt/reloadMetaDataFromStorageWarning.zpt')
               pt.content_type="text/html"
               return pt()
   
       def reloadMetaDataFromStorage(self,RESPONSE=None):
               """reload MD from Storage"""
   
               return reloadMetaDataFromStorage(self,RESPONSE)
       
     def getRDF(self,urn=None):      def getRDF(self,urn=None):
             """rdf of the collection"""              """rdf of the collection"""
   
Line 2237  class ECHO_root(Folder,Persistent,Implic Line 2343  class ECHO_root(Folder,Persistent,Implic
                     retStr+="""<option value="%s">%s\n"""%(contentType[0],contentType[0])                      retStr+="""<option value="%s">%s\n"""%(contentType[0],contentType[0])
         except:          except:
                 try:                  try:
                         for contentType in self.ZopeFind(self.standardMD,obj_metatypes=["OSAS_MetadataMapping"]):                          for contentType in self.ZopeFind(self.getStandardMD(),obj_metatypes=["OSAS_MetadataMapping"]):
                                 if selected and (contentType[0]==selected):                                  if selected and (contentType[0]==selected):
                                         retStr+="""<option selected value="%s">%s\n"""%(contentType[0],contentType[0])                                          retStr+="""<option selected value="%s">%s\n"""%(contentType[0],contentType[0])
                                 else:                                                  else:                
Line 3201  class ECHO_main(ECHO_root,ECHO_navigatio Line 3307  class ECHO_main(ECHO_root,ECHO_navigatio
         {'label':'Main Config','action':'ECHO_navigationConfigForm'},          {'label':'Main Config','action':'ECHO_navigationConfigForm'},
         {'label':'Cache','action':'ECHO_cacheManageForm'},          {'label':'Cache','action':'ECHO_cacheManageForm'},
         {'label':'Main Config','action':'ECHO_copyright_configForm'},          {'label':'Main Config','action':'ECHO_copyright_configForm'},
           {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
         {'label':'Change Weights','action':'changeWeights'},          {'label':'Change Weights','action':'changeWeights'},
         {'label':'Generate from RDF','action':'generateFromRDFForm'},          {'label':'Generate from RDF','action':'generateFromRDFForm'},
         {'label':'update Resource Catalog','action':'updateResourceCatalog'},          {'label':'update Resource Catalog','action':'updateResourceCatalog'},

Removed from v.1.310.2.3  
changed lines
  Added in v.1.313


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