--- ECHO_content/VLPExtension.py 2008/07/31 16:57:45 1.69
+++ ECHO_content/VLPExtension.py 2008/09/08 18:41:34 1.77
@@ -2,16 +2,10 @@
This module contains extensions which where originally made for the VLP.
"""
from OFS.Cache import Cacheable
-from Products.ECHO_content.ECHO_collection import *
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from OFS.Image import File
-try:
- from Products.zogiLib import zogiLib
-except:
- print "Zogilib not installed, VLP_resource will not work"
-
import xml.dom.minidom
import urllib
import xmlrpclib
@@ -23,6 +17,13 @@ from types import *
from Globals import package_home
import transaction
+from Products.ECHO_content.ECHO_collection import *
+from vlp_xmlhelpers import *
+try:
+ from Products.zogiLib import zogiLib
+except:
+ print "Zogilib not installed, VLP_resource will not work"
+
def lemmatize(str):
"""takes a str and addes links the dictionary service"""
@@ -46,6 +47,22 @@ def makeXML(str):
%s
"""%str
+
+def checkXMLfrag(str):
+ """checks and returns str as XML fragment"""
+
+ xmltempl = """
+
%s
\n"%litid) + logging.debug("%s
\n"%litid) except: error=sys.exc_info()[0:2] @@ -500,7 +563,22 @@ class VLP_collection(ECHO_collection): RESPONSE.write("") files=os.listdir(self.vlp_basis) + i=0 for fileName in files: + if i<100: + i+=1 + else: + i=0 + j=0 + while j<5: + try: + transaction.get().commit() + j=6 + except: + logging.error("Commit: %s"%j) + j+=1 + + RESPONSE.write("committed
") if fileName[0:3]=="lit": metalink=self.REQUEST['URL1']+"/"+fileName+"/index_meta" try: @@ -509,11 +587,14 @@ class VLP_collection(ECHO_collection): logging.debug("updateCollection: new %s"%fileName) if RESPONSE is not None: RESPONSE.write("new: %s
\n"%fileName) + logging.debug("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) + + logging.debug("got: %s "%fileName) genObj=getattr(self,fileName) logging.debug("updateCollection: inspecting %s"%fileName) # create index @@ -647,6 +728,34 @@ class VLP_resource(ECHO_resource,Cacheab + def identifyMediaType(self): + """identifiziert den Medientype aus der VLP Datenbank""" + founds=self.ZSQLSimpleSearch('select * from vl_literature where reference=\''+self.resourceID+'\' order by id') + if (not founds) or (len(founds)==0): + self.mediaType="generic" # steht nicht in der Datenbank, dann nimm generisch an + return self.mediaType + + + if founds[0].referencetype =="Audio": + self.mediaType ="audio" + elif founds[0].referencetype =="Film": + self.mediaType ="video" + else: + self.mediaType ="image" # nimm an, dass alle anderen Eintrage in der Datenbank auf images verweisen (Buecher oder Fotografien). + + return self.mediaType + + def getMediaType(self,cached=False): + """give the Media-type back, if chached False, then get it from the database""" + + if (not hasattr(self,'mediaType')) or (self.mediaType=="") or (not cached): + self.identifyMediaType() + + return self.mediaType + + + + def copyTranscriptionFromDB(self): """checks if transcription exits in DB""" founds=self.ZSQLSimpleSearch('select * from vl_transcript where source=\''+self.resourceID+'\' order by id') @@ -701,21 +810,33 @@ class VLP_resource(ECHO_resource,Cacheab def show(self): """show the rendered file""" - if self.REQUEST.get('p',None): - #self.REQUEST.set('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')() + mt = self.getMediaType() - pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp','library_template.zpt')).__of__(self) - pt.content_type="text/html" + if (mt in ['video','audio']): + pt = self.getVLPTemplate('libraryMovieTemplate') + else: #zur zeit werden alle anderen type auf das libraryTemplate abgebildet. + + if self.REQUEST.get('p',None): #make sure that parameter p exists + #self.REQUEST.set('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) + + pt = self.getVLPTemplate('libraryTemplate') + return pt() + def getVLPTemplate(self,name): + html=name+".html" + if hasattr(self,html): + return getattr(self,html) + + pt=PageTemplateFile(os.path.join(package_home(globals()),'vlp',name+'.zpt')).__of__(self) + pt.content_type="text/html" + return pt + def index_html(self): """index_html""" #return self.REQUEST