scripts/intranet/plugins/templatesfilter.py
gdetrez 122619c021 envoi de rapports de bug...
darcs-hash:20061202214729-f46e9-87e28633677416742ceee22abab710b20dba7537.gz
2006-12-02 22:47:29 +01:00

84 lines
3 KiB
Python

from cherrypy.filters.basefilter import BaseFilter
import cherrypy, os
from Cheetah.Template import Template
# ######################################################## #
# Configuration de Cheetah #
# ######################################################## #
def serverSidePath(self, path):
if (cherrypy.config.configMap["global"]["server.environment"] == "development"):
if os.path.isfile(cherrypy.config.configMap["global"]["rootDir"]+'/templates/'+path+".dev"):
return cherrypy.config.configMap["global"]["rootDir"]+'/templates/'+path+".dev"
# les template se trouve dans le dossier template
return cherrypy.config.configMap["global"]["rootDir"]+'/templates/'+path
# on surcharge cette fonction dans la classe Template
Template.serverSidePath = serverSidePath
##########################
# templatesEngine
##########################
#
# Application des templates,
# avec plein de test chians
#
class TemplatesFilter(BaseFilter):
def _getBodyTemplate(self, body):
if isinstance(body, dict):
if body.has_key('template'):
if body['template'].endswith(".py"):
return body['template']
elif body['template'].endswith(".tmpl"):
return body['template']
else:
return body['template'] + ".tmpl"
return False
def _isStandaloneBody(self, body):
if isinstance(body, dict):
if body.has_key('standalone'):
return body['standalone']
if body.has_key('template'):
return False
else:
return True
return True
def _getBodyNameSpace(self, body):
if isinstance(body, dict):
if body.has_key('values'):
return body['values']
return {}
def _useMainTemplate(self, body):
try:
t = Template(file='main.tmpl', searchList=[body,{'login':cherrypy.session['uid'], 'environment':cherrypy.config.configMap["global"]["server.environment"]}])
except:
t = Template(file='main.tmpl', searchList=[body,{'login':'', 'environment':cherrypy.config.configMap["global"]["server.environment"]}])
return str(t)
def goWithThisDict(self, aDict):
body = aDict
bodyTemplate = self._getBodyTemplate(body)
if bodyTemplate:
templatevalues = self._getBodyNameSpace(body)
t = Template(file=bodyTemplate, searchList=[templatevalues])
body['page'] = str(t)
if not self._isStandaloneBody(body):
body = self._useMainTemplate(body)
else:
body = body["page"]
cherrypy.response.body = body
def beforeFinalize(self):
body = cherrypy.response.body
if isinstance(body, dict):
self.goWithThisDict(body)