version 1.54, 2006/01/20 15:12:57
|
version 1.68, 2008/07/18 20:32:31
|
Line 21 import os
|
Line 21 import os
|
from stat import * |
from stat import * |
from types import * |
from types import * |
from Globals import package_home |
from Globals import package_home |
|
import transaction |
|
|
|
|
def lemmatize(str): |
def lemmatize(str): |
Line 145 def manage_addSendMailForm(self, id, toA
|
Line 145 def manage_addSendMailForm(self, id, toA
|
|
|
|
|
class VLP_essay(Folder): |
class VLP_essay(Folder): |
"""classe für VLP essays""" |
"""classe fr VLP essays""" |
|
|
meta_type="VLP_essay" |
meta_type="VLP_essay" |
|
|
Line 263 class VLP_essay(Folder):
|
Line 263 class VLP_essay(Folder):
|
retstr=url+"?p="+str(int(pagenum)+1) |
retstr=url+"?p="+str(int(pagenum)+1) |
return retstr |
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): |
def previousURL(self,pagenum,url): |
|
|
if int(pagenum)-1 > 0: |
if int(pagenum)-1 > 0: |
Line 364 class VLP_subcollection(ECHO_collection)
|
Line 370 class VLP_subcollection(ECHO_collection)
|
sort=self.collectionSort(type) |
sort=self.collectionSort(type) |
|
|
item = [x for x in self.ZSQLSimpleSearch("""SELECT * FROM vl_literature |
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) |
+ """ %s AND not referenceType='%s' """%(online,type) |
+ """ORDER BY """ + sort)] |
+ """ORDER BY """ + sort)] |
|
|
tocItem = [x for x in self.ZSQLSimpleSearch("""SELECT * FROM vl_literature |
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 |
+ """AND online = 1 AND referenceType='%s' """%type |
+ """ORDER BY """ + sort)] |
+ """ORDER BY """ + sort)] |
|
|
Line 424 class VLP_collection(ECHO_collection):
|
Line 430 class VLP_collection(ECHO_collection):
|
|
|
|
|
|
|
def generateSubCollections(self,errorsTXT=""): |
def generateSubCollections(self,errorsTXT="",forceUpdate=False,RESPONSE=None): |
"""erzeuge subcollectionen""" |
"""erzeuge subcollectionen""" |
founds=self.ZSQLSimpleSearch("select * from vl_literature where referencetype in ('Edited Book'),'(Book)','(Collection)','(JournalVolume)')") |
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("<h2>Create Subcollections</h2>\n") |
self.REQUEST.RESPONSE.write("<h2>Create Subcollections</h2>\n") |
for found in founds: |
for found in founds: |
try: |
try: |
foundCol=self.ZopeFind(self,obj_ids=[found.reference]) |
litid = str(found.reference) |
|
foundCol=self.ZopeFind(self,obj_ids=[litid]) |
if foundCol: |
if foundCol: |
|
col = foundCol[0][1] |
|
logging.debug("generateSubCollections: subcollection %s exists (%s)"%(col.getId(),found.reference)) |
|
if (col.title != found.titlerefdisplay) or (col.label != found.titlerefdisplay): |
|
# subcollection seems to have changed |
|
logging.debug("generateSubCollections: subcollection has changed, recreating!") |
self.manage_delObjects([foundCol[0][0]]) |
self.manage_delObjects([foundCol[0][0]]) |
|
manage_addVLP_subCollection(self,litid,found.titlerefdisplay,found.titlerefdisplay) |
|
else: |
|
logging.debug("generateSubCollections: creating new subcollection %s"%found.reference) |
|
manage_addVLP_subCollection(self,litid,found.titlerefdisplay,found.titlerefdisplay) |
|
|
manage_addVLP_subCollection(self,found.reference,found.titlerefdisplay,found.titlerefdisplay) |
|
#getattr(self,found.reference).generateSubCollectionFromDB() |
|
#teste ob es Images auf dem Server gibt mit gleichem Namen (frontmatter) |
#teste ob es Images auf dem Server gibt mit gleichem Namen (frontmatter) |
if os.path.exists(os.path.join(self.vlp_basis,found.reference)): |
if os.path.exists(os.path.join(self.vlp_basis,litid)): |
|
logging.debug("generateSubCollections: found frontmatter in %s"%litid) |
|
obj=getattr(self,litid) |
|
if not self.ZopeFind(obj,obj_ids=[litid]): |
|
metalink=self.REQUEST['URL1']+"/"+litid+"/"+litid+"/index_meta" |
|
newObj=VLP_resource(litid,'',metalink,litid,litid,litid,'generated','book','','','','','','') |
|
obj._setObject(litid,newObj) |
|
|
|
genObj=getattr(obj,litid) |
|
genObj.createIndexFile(forceUpdate=forceUpdate) |
|
|
obj=getattr(self,found.reference) |
if RESPONSE is not None: |
if not self.ZopeFind(obj,obj_ids=[found.reference]): |
self.REQUEST.RESPONSE.write("<p>%s</p>\n"%litid) |
metalink=self.REQUEST['URL1']+"/"+found.reference+"/"+found.reference+"/index_meta" |
|
newObj=VLP_resource(found.reference,'',metalink,found.reference,found.reference,found.reference,'generated','book','','','','','','') |
|
obj._setObject(found.reference,newObj) |
|
genObj=getattr(obj,found.reference) |
|
genObj.createIndexFile() |
|
|
|
self.REQUEST.RESPONSE.write("<p>%s</p>\n"%found.reference) |
|
except: |
except: |
error=sys.exc_info()[0:2] |
error=sys.exc_info()[0:2] |
RESPONSE.write("(ERROR (%s): %s %s)\n"%(found.reference,error[0],error[1])) |
logging.error("generateSubCollections: ERROR in %s"%litid) |
errorsTXT+="<p>No subcollection of %s "+"(ERROR: %s %s)</p>"%error |
if RESPONSE is not None: |
|
RESPONSE.write("<p>(ERROR (%s): %s %s)</p>\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+="<p>ERROR: No subcollection of %s (ERROR: %s %s)</p>\n"%(litid,error[0],error[1]) |
|
#errorsTXT+="<p>No subcollection of %s "%litid+"(ERROR: %s %s)</p>"%error |
|
|
return errorsTXT |
return errorsTXT |
|
|
Line 468 class VLP_collection(ECHO_collection):
|
Line 492 class VLP_collection(ECHO_collection):
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
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""" |
"""liest verzeichnisse aus dem pfad und legt sie dann als objekte in den ordner""" |
errorsTXT="<h2>Errors</h2>" |
errorsTXT="<h2>Errors</h2>" |
|
if RESPONSE is not None: |
|
RESPONSE.setHeader('Content-Type','text/html') |
RESPONSE.write("<html><body>") |
RESPONSE.write("<html><body>") |
files=os.listdir(self.vlp_basis) |
|
|
|
errorsTXT+="<h3>New Ressources</h3>" |
files=os.listdir(self.vlp_basis) |
for fileName in files: |
for fileName in files: |
|
|
if fileName[0:3]=="lit": |
if fileName[0:3]=="lit": |
|
|
metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta" |
metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta" |
try: |
try: |
if not hasattr(self,fileName): |
if not hasattr(self,fileName): |
|
# create new resource |
|
logging.debug("updateCollection: new %s"%fileName) |
|
if RESPONSE is not None: |
|
RESPONSE.write("<p>new: %s</p>\n"%fileName) |
newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','') |
newObj=VLP_resource(fileName,'',metalink,fileName,fileName,fileName,'generated','book','','','','','','') |
self._setObject(fileName,newObj) |
self._setObject(fileName,newObj) |
|
|
RESPONSE.write("<p>got: %s\n</p>"%fileName) |
if RESPONSE is not None: |
|
RESPONSE.write("<p>got: %s "%fileName) |
genObj=getattr(self,fileName) |
genObj=getattr(self,fileName) |
|
logging.debug("updateCollection: inspecting %s"%fileName) |
|
# create index |
if hasattr(genObj,'createIndexFile'): |
if hasattr(genObj,'createIndexFile'): |
try: |
try: |
genObj.createIndexFile() |
logging.debug("updateCollection: creating index for %s"%fileName) |
|
msg = genObj.createIndexFile(forceUpdate=forceUpdate) |
|
if msg and RESPONSE is not None: |
|
RESPONSE.write(msg) |
except: |
except: |
error=sys.exc_info()[0:2] |
error=sys.exc_info()[0:2] |
RESPONSE.write("<p>(ERROR (%s): %s %s)</p>\n"%(fileName,error[0],error[1])) |
if RESPONSE is not None: |
errorsTXT+="<p>No indexfile of %s "+"(ERROR: %s %s)</p>"%error |
RESPONSE.write("(ERROR (%s): %s %s) "%(fileName,error[0],error[1])) |
|
errorsTXT+="<p>ERROR creating index for %s "%fileName+"(ERROR: %s %s)</p>\n"%error |
|
|
|
# update pageSizeSum for subcollections |
if genObj.meta_type=="VLP_subcollection": |
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() |
genObj.pageSizeSum=getattr(genObj,fileName).getPageSizeSum() |
else: |
else: |
genObj.pageSizeSum=genObj.getPageSizeSum() |
genObj.pageSizeSum=genObj.getPageSizeSum() |
|
|
|
if RESPONSE is not None: |
|
RESPONSE.write("</p>\n") |
|
|
except: |
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("<p>(ERROR (%s): %s %s)</p>\n"%(fileName,error[0],error[1])) |
RESPONSE.write("<p>(ERROR (%s): %s %s)</p>\n"%(fileName,error[0],error[1])) |
errorsTXT+="<p>File not created:%s "+"(ERROR: %s %s)</p>"%error |
errorsTXT+="<p>File not created:%s (ERROR: %s %s)</p>\n"%(fileName,error[0],error[1]) |
|
|
errorsTXT+=self.generateSubCollections() |
# update subcollections |
errorsTXT+="/n" |
errorsTXT+=self.generateSubCollections(forceUpdate=forceUpdate,RESPONSE=RESPONSE) |
RESPONSE.write(errorsTXT) |
errorsTXT+="\n" |
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.write(errorsTXT) |
|
RESPONSE.write("</body></html>") |
|
|
def updateCollectionMD(self,RESPONSE=None): |
def updateCollectionMD(self,RESPONSE=None): |
"""updateMD""" |
"""updateMD""" |
Line 657 class VLP_resource(ECHO_resource,Cacheab
|
Line 701 class VLP_resource(ECHO_resource,Cacheab
|
def show(self): |
def show(self): |
"""show the rendered file""" |
"""show the rendered file""" |
|
|
|
|
if self.REQUEST.get('p',None): |
if self.REQUEST.get('p',None): |
#self.REQUEST.set('pn',self.file2page(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'): |
if hasattr(self,'libraryTemplate.html'): |
return getattr(self,'libraryTemplate.html')() |
return getattr(self,'libraryTemplate.html')() |
Line 771 class VLP_resource(ECHO_resource,Cacheab
|
Line 819 class VLP_resource(ECHO_resource,Cacheab
|
temp=[] |
temp=[] |
ret.sort() |
ret.sort() |
for x in ret: |
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])) |
temp.append((calculateName(x),os.path.splitext(x)[0])) |
return temp |
return temp |
|
|
Line 780 class VLP_resource(ECHO_resource,Cacheab
|
Line 827 class VLP_resource(ECHO_resource,Cacheab
|
def firstPage(self,url=None): |
def firstPage(self,url=None): |
"""showlink to the first image""" |
"""showlink to the first image""" |
if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag |
if self.REQUEST.get('pn','1')=="1": #erste seinte dann kein a tag |
return """<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first""" |
return """<img src="/images/first.gif" alt="first" width="14" height="14" border="0"><br>first""" |
|
|
else: |
else: |
ws=self.REQUEST.get('ws','1') |
ws=self.REQUEST.get('ws','1') |
return """<a href=%s> |
return """<a href=%s> |
<img src="../../images/first.gif" alt="first" width="14" height="14" border="0"><br>first |
<img src="/images/first.gif" alt="first" width="14" height="14" border="0"><br>first |
</a> |
</a> |
"""%(self.REQUEST['URL']+"?pn=1&ws=%s"%ws) |
"""%(self.REQUEST['URL']+"?pn=1&ws=%s"%ws) |
|
|
Line 796 class VLP_resource(ECHO_resource,Cacheab
|
Line 843 class VLP_resource(ECHO_resource,Cacheab
|
ln=len(pages) |
ln=len(pages) |
|
|
if (self.REQUEST.get('pn')==str(ln)) or (ln==1): #letzte seite dann kein a tag oder nur eine Seite |
if (self.REQUEST.get('pn')==str(ln)) or (ln==1): #letzte seite dann kein a tag oder nur eine Seite |
return """<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last""" |
return """<img src="/images/last.gif" alt="last" width="14" height="14" border="0"><br>last""" |
|
|
else: |
else: |
ws=self.REQUEST.get('ws','1') |
ws=self.REQUEST.get('ws','1') |
return """<a href=%s> |
return """<a href=%s> |
<img src="../../images/last.gif" alt="last" width="14" height="14" border="0"><br>last |
<img src="/images/last.gif" alt="last" width="14" height="14" border="0"><br>last |
</a> |
</a> |
"""%(self.REQUEST['URL']+"?pn="+str(ln)+"&ws="+ws) |
"""%(self.REQUEST['URL']+"?pn="+str(ln)+"&ws="+ws) |
|
|
Line 811 class VLP_resource(ECHO_resource,Cacheab
|
Line 858 class VLP_resource(ECHO_resource,Cacheab
|
|
|
nn = int(self.REQUEST.get('pn','1'))-1 |
nn = int(self.REQUEST.get('pn','1'))-1 |
if nn < 1: #letzte seite dann kein a tag |
if nn < 1: #letzte seite dann kein a tag |
return """<img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev""" |
return """<img src="/images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev""" |
|
|
else: |
else: |
ws=self.REQUEST.get('ws','1') |
ws=self.REQUEST.get('ws','1') |
return """<a href=%s> |
return """<a href=%s> |
<img src="../../images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev |
<img src="/images/lisePrev.gif" alt="prev" width="14" height="14" border="0"><br>prev |
</a> |
</a> |
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws) |
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws) |
|
|
Line 828 class VLP_resource(ECHO_resource,Cacheab
|
Line 875 class VLP_resource(ECHO_resource,Cacheab
|
|
|
nn = int(self.REQUEST.get('pn','1'))+1 |
nn = int(self.REQUEST.get('pn','1'))+1 |
if (nn>int(ln)) or (ln==1): #letzte seite dann kein a tag |
if (nn>int(ln)) or (ln==1): #letzte seite dann kein a tag |
return """<img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next""" |
return """<img src="/images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next""" |
|
|
else: |
else: |
ws=self.REQUEST.get('ws','1') |
ws=self.REQUEST.get('ws','1') |
return """<a href=%s> |
return """<a href=%s> |
<img src="../../images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next |
<img src="/images/liseNext.gif" alt="next" width="14" height="14" border="0"><br>next |
</a> |
</a> |
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws) |
"""%(self.REQUEST['URL']+"?pn="+str(nn)+"&ws="+ws) |
|
|
Line 879 class VLP_resource(ECHO_resource,Cacheab
|
Line 926 class VLP_resource(ECHO_resource,Cacheab
|
pageinfo=self.readIndexFile()[pn-1] |
pageinfo=self.readIndexFile()[pn-1] |
return pageinfo[2] |
return pageinfo[2] |
|
|
def createIndexFile(self,RESPONSE=None): |
|
"""create index file""" |
|
|
|
|
def createIndexFile(self,forceUpdate=False,RESPONSE=None): |
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','index_template.zpt')).__of__(self)() |
"""create index file""" |
|
logging.debug("createindexfile of %s"%self.id) |
|
|
|
if hasattr(self,'index.xml'): |
|
# index exists |
|
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) |
|
dirtime = os.path.getmtime(imgdir) |
|
zttime = zt.bobobase_modification_time() |
|
logging.debug("createindexfile: dir %s of %s index of %s"%(imgdir,dirtime,zttime)) |
|
if dirtime < zttime: |
|
# nothing to do |
|
logging.debug("createindexfile: dir %s older than index"%(imgdir)) |
|
return "index is up to date" |
|
|
if not hasattr(self,'index.xml'): |
else: |
|
# create new index template |
zt=ZopePageTemplate('index.xml') |
zt=ZopePageTemplate('index.xml') |
self._setObject('index.xml',zt) |
self._setObject('index.xml',zt) |
else: |
|
zt=getattr(self,'index.xml') |
|
|
|
|
|
|
# fill index template |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','index_template.zpt')).__of__(self)() |
|
#logging.debug("createindexfile uses %s"%pt) |
zt.pt_edit(pt, 'text/xml') |
zt.pt_edit(pt, 'text/xml') |
|
transaction.get().commit() |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |