--- ECHO_content/VLPExtension.py 2006/02/13 16:41:49 1.55 +++ ECHO_content/VLPExtension.py 2008/01/29 13:53:22 1.67 @@ -21,7 +21,7 @@ import os from stat import * from types import * from Globals import package_home - +import transaction def lemmatize(str): @@ -145,7 +145,7 @@ def manage_addSendMailForm(self, id, toA class VLP_essay(Folder): - """classe für VLP essays""" + """classe fr VLP essays""" meta_type="VLP_essay" @@ -263,6 +263,12 @@ class VLP_essay(Folder): retstr=url+"?p="+str(int(pagenum)+1) return retstr + def lastURL(self,pagenum,url): + # teste ob performance ok, sonst in variable + pages=len(self.ZopeFind(self,obj_metatypes=['DTML Document','File'])) + + return url+"?p="+str(pages) + def previousURL(self,pagenum,url): if int(pagenum)-1 > 0: @@ -364,12 +370,12 @@ class VLP_subcollection(ECHO_collection) sort=self.collectionSort(type) item = [x for x in self.ZSQLSimpleSearch("""SELECT * FROM vl_literature - WHERE volumeid = '%s' """%self.getId() + WHERE volumeid ~ '%s\\\\M' """%self.getId() + """ %s AND not referenceType='%s' """%(online,type) + """ORDER BY """ + sort)] tocItem = [x for x in self.ZSQLSimpleSearch("""SELECT * FROM vl_literature - WHERE volumeid = '%s' """%self.getId() + WHERE reference = '%s' """%self.getId() + """AND online = 1 AND referenceType='%s' """%type + """ORDER BY """ + sort)] @@ -424,39 +430,56 @@ class VLP_collection(ECHO_collection): - def generateSubCollections(self,errorsTXT=""): - """erzeuge subcollectionen""" - founds=self.ZSQLSimpleSearch("select * from vl_literature where referencetype in ('(Edited Book)','(Book)','(Collection)','(JournalVolume)')") - + def generateSubCollections(self,errorsTXT="",forceUpdate=False,RESPONSE=None): + """erzeuge subcollectionen""" + logging.debug("generateSubCollections") + founds=self.ZSQLSimpleSearch("select * from vl_literature where referencetype in ('(Edited Book)','(Book)','(Collection)','(JournalVolume)','(Generic Container)')") + + if RESPONSE is not None: + RESPONSE.setHeader('Content-Type','text/html') self.REQUEST.RESPONSE.write("
%s
\n"%found.reference) - except: - error=sys.exc_info()[0:2] - RESPONSE.write("(ERROR (%s): %s %s)\n"%(found.reference,error[0],error[1])) - errorsTXT+="No subcollection of %s "+"(ERROR: %s %s)
"%error + if RESPONSE is not None: + self.REQUEST.RESPONSE.write("%s
\n"%litid) - return errorsTXT + except: + error=sys.exc_info()[0:2] + logging.error("generateSubCollections: ERROR in %s"%litid) + if RESPONSE is not None: + RESPONSE.write("(ERROR (%s): %s %s)
\n"%(litid,error[0],error[1])) + #logging.error("generateSubCollections: %s %s"%error) + #self.REQUEST.RESPONSE.write("(ERROR (%s): %s %s)\n"%(litid,repr(error[0]),repr(error[1]))) + errorsTXT+="ERROR: No subcollection of %s (ERROR: %s %s)
\n"%(litid,error[0],error[1]) + #errorsTXT+="No subcollection of %s "%litid+"(ERROR: %s %s)
"%error + + return errorsTXT def VLP_path_configForm(self): """change pt""" @@ -469,49 +492,68 @@ class VLP_collection(ECHO_collection): if RESPONSE is not None: RESPONSE.redirect('manage_main') - def updateCollection(self,RESPONSE=None): + def updateCollection(self,forceUpdate=False,RESPONSE=None): """liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" errorsTXT="got: %s\n
"%fileName) - genObj=getattr(self,fileName) - if hasattr(genObj,'createIndexFile'): - try: - genObj.createIndexFile() - except: - error=sys.exc_info()[0:2] - RESPONSE.write("(ERROR (%s): %s %s)
\n"%(fileName,error[0],error[1])) - errorsTXT+="No indexfile of %s "+"(ERROR: %s %s)
"%error - - if genObj.meta_type=="VLP_subcollection": - genObj.pageSizeSum=getattr(genObj,fileName).getPageSizeSum() - else: - genObj.pageSizeSum=genObj.getPageSizeSum() - + if not hasattr(self,fileName): + # create new resource + logging.debug("updateCollection: new %s"%fileName) + if RESPONSE is not None: + RESPONSE.write("new: %s
\n"%fileName) + newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','') + self._setObject(fileName,newObj) + + if RESPONSE is not None: + RESPONSE.write("got: %s "%fileName) + genObj=getattr(self,fileName) + logging.debug("updateCollection: inspecting %s"%fileName) + # create index + if hasattr(genObj,'createIndexFile'): + try: + logging.debug("updateCollection: creating index for %s"%fileName) + msg = genObj.createIndexFile(forceUpdate=forceUpdate) + if msg and RESPONSE is not None: + RESPONSE.write(msg) + except: + error=sys.exc_info()[0:2] + if RESPONSE is not None: + RESPONSE.write("(ERROR (%s): %s %s) "%(fileName,error[0],error[1])) + errorsTXT+="
ERROR creating index for %s "%fileName+"(ERROR: %s %s)
\n"%error + + # update pageSizeSum for subcollections + if genObj.meta_type=="VLP_subcollection": + if RESPONSE is not None: + RESPONSE.write(" is subcollection") + logging.debug("updateCollection: %s is subcollection"%fileName) + genObj.pageSizeSum=getattr(genObj,fileName).getPageSizeSum() + else: + genObj.pageSizeSum=genObj.getPageSizeSum() + + if RESPONSE is not None: + RESPONSE.write("\n") + except: - error=sys.exc_info()[0:2] + error=sys.exc_info()[0:2] + logging.error("updateCollection: ERROR in %s (%s %s)"%(fileName,error[0],error[1])) + if RESPONSE is not None: RESPONSE.write("(ERROR (%s): %s %s)
\n"%(fileName,error[0],error[1])) - errorsTXT+="File not created:%s "+"(ERROR: %s %s)
"%error - - errorsTXT+=self.generateSubCollections() - errorsTXT+="/n" - RESPONSE.write(errorsTXT) + errorsTXT+="File not created:%s (ERROR: %s %s)
\n"%(fileName,error[0],error[1]) + + # update subcollections + errorsTXT+=self.generateSubCollections(forceUpdate=forceUpdate,RESPONSE=RESPONSE) + errorsTXT+="\n" if RESPONSE is not None: - RESPONSE.redirect('manage_main') + RESPONSE.write(errorsTXT) + RESPONSE.write("") def updateCollectionMD(self,RESPONSE=None): """updateMD""" @@ -661,8 +703,11 @@ class VLP_resource(ECHO_resource,Cacheab if self.REQUEST.get('p',None): #self.REQUEST.set('pn',self.file2page(self.REQUEST.get('p',None))) - self.REQUEST.RESPONSE.redirect(self.REQUEST['URL']+"?pn="+self.file2page(self.REQUEST.get('p',None))) - + params = "pn=%s"%self.file2page(self.REQUEST.get('p',None)) + mk = self.REQUEST.get('mk',None) + if mk: + params += "&mk=%s"%mk + self.REQUEST.RESPONSE.redirect(self.REQUEST['URL']+'?'+params) if hasattr(self,'libraryTemplate.html'): return getattr(self,'libraryTemplate.html')() @@ -773,8 +818,7 @@ class VLP_resource(ECHO_resource,Cacheab temp=[] ret.sort() for x in ret: - if (not (x[0]==".")) and (not x[0:4] in excludeNames): - + if (not (x[0] in ('.',':'))) and (not x[0:4] in excludeNames): temp.append((calculateName(x),os.path.splitext(x)[0])) return temp @@ -782,12 +826,12 @@ class VLP_resource(ECHO_resource,Cacheab def firstPage(self,url=None): """showlink to the first image""" if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag - return """