--- ECHO_content/ECHO_collection.py 2010/02/15 19:03:28 1.308 +++ ECHO_content/ECHO_collection.py 2012/01/03 13:02:31 1.312 @@ -21,6 +21,7 @@ import tempfile import zipfile import re import os,shutil +import traceback import OFS.Image from types import * from OFS.Cache import Cacheable @@ -57,6 +58,7 @@ import Ft.Xml.XPath import cStringIO import sys +import logging try: from psycopg import libpq @@ -701,6 +703,39 @@ class ECHO_collection(CatalogAware, Fold path="/mpiwg/online/permanent/shipbuilding" + def getSection(self, crumbs=None): + """returns the current section name""" + # use breadcrumbs if available + if crumbs is not None and len(crumbs) > 0: + return crumbs[0][2].getId() + + p = self + + sec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav': + sec = p.getId() + p = p.aq_parent + + return sec + + def getSubSection(self, crumbs=None): + """returns the current subsection name""" + # use breadcrumbs if available + if crumbs is not None and len(crumbs) > 1: + return crumbs[1][2].getId() + + p = self + sec = None + subsec = None + # descend parents to the root (and remember the last id) + while p is not None and p.meta_type != 'ECHO_root' and p.meta_type!='ECHO_main' and p.meta_type!='ECHO_nav': + subsec = sec + sec = p.getId() + p = p.aq_parent + + return subsec + def exportImportObjects_html(self,RESPONSE): """ImportObject""" @@ -1003,36 +1038,78 @@ class ECHO_collection(CatalogAware, Fold pass return ret - def importCollection(self,path=None,RESPONSE=None): + 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""" - if path is None: + if (path is None) & (folderListFile is None): pt=zptFile(self, 'zpt/importCollection.zpt') return pt() - files=os.listdir(path) + + + if (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="" for fileName in files: 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(); + - tempPath=re.sub("/mpiwg/online","",path) - link="http://echo.mpiwg-berlin.mpg.de/zogilib_book?fn="+tempPath+"/"+fileName+"/pageimg" - metalink=self.path+"/"+fileName+"/index.meta" - try: - - #link="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.x.cgi?dir="+fileName+"&step=thumb" - - newObj=ECHO_resource(fileName,link,metalink,fileName,fileName,fileName,'generated','book','','','','','','') - self._setObject(fileName,newObj) + if (replacePathExperimental and replacePathExperimental!=''): + path=re.sub(replacePathExperimental,"/mpiwg/online/experimental",path) + + if (replacePathPermanent and replacePathPermanent!=''): + path=re.sub(replacePathPermanent,"/mpiwg/online/permanent",path) + + link=viewerUrl%(path+"/"+fileName+"/pageimg") + + metalink=metaDataUrl+re.sub("/mpiwg/online/","",path+"/"+fileName+"/index.meta") - genObj=getattr(self,fileName) - #genObj.createIndexFile() - ret+="OK:"+fileName+"
" + #metalink=metaDataUrl+"/"+path+"/"+fileName+"/index.meta" + + newindexMeta =re.sub("/mpiwg/online/","",path+"/"+fileName) + + try: + type=self.metadata.getBibTypeFromIndexMeta(newindexMeta) + + try: + + #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) + + genObj=getattr(self,fileName) + #genObj.createIndexFile() + ret+="OK:"+fileName+"
" + 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+="ERROR:"+fileName+"
" except: - print "ERROR" - ret+="ERROR:"+fileName+"
" + 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+"
" return ret @@ -1467,8 +1544,15 @@ class ECHO_collection(CatalogAware, Fold def showOverview(self): """overview""" + # ECHO_overview.html template for this instance if 'ECHO_overview.html' in self.__dict__.keys(): return getattr(self,'ECHO_overview.html')() + + # ECHO_overview_main template in path + if hasattr(self, 'ECHO_overview_main'): + return getattr(self, 'ECHO_overview_main')() + + # template from product pt=zptFile(self, 'zpt/ECHO_content_overview.zpt') return pt() @@ -1882,7 +1966,6 @@ class ECHO_root(Folder,Persistent,Implic getSubCols = ECHO_helpers.getSubCols manage_options=Folder.manage_options+( - {'label':'Main Config','action':'ECHO_copyright_configForm'}, {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, {'label':'Change Weights','action':'changeWeights'}, {'label':'Generate from RDF','action':'generateFromRDFForm'}, @@ -1891,6 +1974,8 @@ class ECHO_root(Folder,Persistent,Implic ) + + def getECHORootURL(self): return self.absolute_url() @@ -2247,7 +2332,7 @@ class ECHO_root(Folder,Persistent,Implic retStr+="""