--- ECHO_content/VLPExtension.py 2008/11/20 10:45:14 1.84 +++ ECHO_content/VLPExtension.py 2010/02/15 19:03:28 1.92 @@ -163,7 +163,7 @@ def manage_addSendMailForm(self, id, toA class VLP_collectionFolder(Folder): - """klasse fŸr folder innheralb der collection""" + """klasse fuer folder innerhalb der collection""" meta_type="VLP_collectionFolder" class VLP_essay(Folder): @@ -486,9 +486,12 @@ def manage_addVLP_subCollection(self,id, from zope.publisher.interfaces import IPublishTraverse from zope.interface import implements from zope.publisher.interfaces import NotFound -from zope.app import zapi +#from zope.app import zapi from zope.component import queryMultiAdapter -from ZPublisher.BaseRequest import DefaultPublishTraverse +try: + from ZPublisher.BaseRequest import DefaultPublishTraverse +except: + pass class VLP_collection(ECHO_collection,Acquisition.Explicit): """VLP spezifische Erweiterung der Collection""" @@ -524,7 +527,7 @@ class VLP_collection(ECHO_collection,Acq if name.startswith("lit"): #umleitung wenn lit aufgerufen wirk # umleitung auf den eigentlichen folder nur wenn direkt der Folder litXXX oder dessen index_html methode aufgerufen wird - if lastActual.startswith("lit") or (lastActual=="index_html") or (lastActual=="index_meta"): + if lastActual.startswith("lit") or (lastActual=="index_html") or (lastActual=="index_meta") or (lastActual=="getTitle") or (lastActual=="getMetaDataLink") or (lastActual=="hasTranscription") or (lastActual=="transcription"): #obj=self. ZopeFind(self,obj_ids=[name],search_sub=1) ob=self.findObjFromLitName(name) if not ob: @@ -583,7 +586,7 @@ class VLP_collection(ECHO_collection,Acq col = foundCol logging.debug("generateSubCollections: subcollection %s exists (%s)"%(repr(col),found.reference)) logging.debug(repr([col.title,found.titlerefdisplay,col.label,found.titlerefdisplay])) - if (unicodify(col.title) != found.titlerefdisplay) or (unicodify(col.label) != found.titlerefdisplay): + if (unicodify(col.title) != unicodify(found.titlerefdisplay)) or (unicodify(col.label) != unicodify(found.titlerefdisplay)): # subcollection seems to have changed logging.debug("generateSubCollections: subcollection has changed, recreating!") col.aq_parent.manage_delObjects([col.getId()]) @@ -639,8 +642,11 @@ class VLP_collection(ECHO_collection,Acq logging.error("getOrCreateFolder wrong filename: %s"%fileName) return None - - restName="%08d"%int(fileName[3:]) + try: + restName="%08d"%int(fileName[3:]) + except: + logging.error("getOrCreateFolder wrong filename: %s"%fileName) + return None fs=(restName[0:2],restName[0:4],restName[0:6]) @@ -737,7 +743,7 @@ class VLP_collection(ECHO_collection,Acq errorsTXT+="

File not created:%s (ERROR: %s %s)

\n"%(fileName,error[0],error[1]) return errorsTXT - def updateCollection(self,forceUpdate=False,RESPONSE=None): + def updateCollection(self,forceUpdate=True,RESPONSE=None): """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" # update subcollections @@ -804,9 +810,14 @@ class VLP_resource(ECHO_resource,Cacheab meta_type="VLP_resource" + def _p_resolveConflict(self,oldstate,savedstate,newstate): + logging.debug("updateCollection: Have to resolve conflict!") + return newstate + #vlp_basis="/mpiwg/online/permanent/vlp" + referencetypes=[] manage_options=ECHO_resource.manage_options+Cacheable.manage_options+( @@ -816,17 +827,68 @@ class VLP_resource(ECHO_resource,Cacheab {'label':'Generate Library Template','action':'generateLibraryTemplateHTML'}, ) + def getMetaDataLink(self): + """link auf die metatdaten""" + return self.absolute_url()+"/index_meta" + + def getTitle(self): + """Title der Ressource""" + title= self.ZSQLSimpleSearch("""select title from vl_literature where reference= \'%s\' """ %self.getId())[0].title + logging.debug(title) + return title + def getImagePath(self): """Pfad zu den Images""" + path=None if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')): - return os.path.join(self.vlp_basis,self.resourceID,'pageimg') + path= os.path.join(self.vlp_basis,self.resourceID,'pageimg') elif os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pages')): - return os.path.join(self.vlp_basis,self.resourceID,'pages') - else: - return "no images " - + path = os.path.join(self.vlp_basis,self.resourceID,'pages') + # workaround in some cases there seem to be no pictures in pages + + if os.path.isdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')): + + + pagesHi = os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi')) + if path is None: + return os.path.join(self.vlp_basis,self.resourceID,'pagesHi') + + pages = os.listdir(path) + + if len (pagesHi) > len(pages): + + countHi=0 + for p in pagesHi: + dat,ext = os.path.splitext(p) + if ext.lower() in [".tiff",".tif",".jpg"]: + countHi+=1 + count=0 + for p in pages: + dat,ext = os.path.splitext(p) + if ext.lower() in [".tiff",".tif",".jpg"]: + count+=1 + + if countHi > count: + path=os.path.join(self.vlp_basis,self.resourceID,'pagesHi') + + logging.error("pages < pagesHi: %s"%self.resourceID) + if path is None: + + + if len (os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pagesHi'))) > len(os.listdir(path)): + + + + path=os.path.join(self.vlp_basis,self.resourceID,'pagesHi') + logging.error("pages < pagesHi: %s"%self.resourceID) + else: + + logging.error("no images: %s"%self.resourceID) + return None + + return path def transcription(self): @@ -887,7 +949,7 @@ class VLP_resource(ECHO_resource,Cacheab ret+="" re2=ret[0:] - re3=re2.decode('latin-1').encode('utf-8') + re3=self.unicodify(re2) #re3=re2 ft=self.ZopeFind(self,obj_metatypes=['ECHO_fullText']) @@ -908,6 +970,16 @@ class VLP_resource(ECHO_resource,Cacheab else: return "no: %s"%self.getId() + def hasTranscription(self): + """transcription""" + + if not hasattr(self,'fulltext'): + self.copyTranscriptionFromDB() + if not hasattr(self,'fulltext'): #still not + return False + + return True + def resetMetaLink(self,all="no",RESPONSE=None): """resets metalink to standard resp. in case of server change it sets to the new server url""" if all=="yes": @@ -1053,13 +1125,14 @@ class VLP_resource(ECHO_resource,Cacheab ret="%s: %s"%(str[0],name) return ret - try: - ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pageimg')) - self.imagePath='pageimg' - except: - ret=os.listdir(os.path.join(self.vlp_basis,self.resourceID,'pages')) - self.imagePath='pages' + self.imagePathFull=self.getImagePath(); + self.imagePath=self.imagePathFull.split("/")[-1] + if (self.imagePath is None): + return None + temp=[] + ret = os.listdir(self.imagePathFull) + ret.sort() for x in ret: if (not (x[0] in ('.',':'))) and (not x[0:4] in excludeNames): @@ -1178,7 +1251,10 @@ class VLP_resource(ECHO_resource,Cacheab zt=getattr(self,'index.xml') if not forceUpdate: # check if directory is newer (self.imagePath sould be set by now) - imgdir = os.path.join(self.vlp_basis, self.resourceID, self.imagePath) + path = self.getImagePath() + if (path is None): + return "CREATE INDEX FILE NOT POSSIBLE" + imgdir = os.path.join(path) dirtime = os.path.getmtime(imgdir) zttime = zt.bobobase_modification_time() logging.debug("createindexfile: dir %s of %s index of %s"%(imgdir,dirtime,zttime))