20
20
# This is a cherrypy / mako integration module
25
24
from urlparse import urlparse
26
25
from mako.template import Template
27
26
from mako.lookup import TemplateLookup
32
Sets the following directories:
33
templates_directory - list of dirs to be searched for templates
34
module_directory - directory to keep cached templates
36
def set_directories(templates_directory, module_directory):
29
# International support
30
supported_languages = ['en_US','pt_PT']
32
def set_mako_directories(templates_directory, module_directory):
39
35
# Template rendering with internationalization support
40
mylookup = TemplateLookup( \
41
directories=templates_directory \
42
, module_directory=module_directory \
43
, input_encoding='utf-8' \
44
, output_encoding='utf-8' \
45
, encoding_errors='replace' \
46
, default_filters=['stripnone'] \
47
, imports=['from mako_filters import stripnone, html_lines']
36
mylookup = TemplateLookup(directories=templates_directory, \
37
module_directory=module_directory, \
38
output_encoding='utf-8', encoding_errors='replace')
50
""" TODO: Translation using gettext """
40
def serve_template(templatename, **kwargs):
42
mytemplate = mylookup.get_template(templatename)
54
def serve_template(templatename, **kwargs):
56
mytemplate = mylookup.get_template(templatename)
45
kwargs["_"] = translate_string
60
46
kwargs["session"] = session
62
48
# Check if we need to use a lang prefix
50
cherrypy.thread_data.lang = lang
63
52
kwargs["pagename"] = pagename()
64
kwargs["base_url"] = cherrypy.request.base
53
kwargs["sitebase"] = "%s%s" % (cherrypy.request.base, lang)
65
54
kwargs["self_url"] = cherrypy.request.path_info
66
kwargs["release"] = cherrypy.request.release
67
55
kwargs["login_username"] = None
68
56
if cherrypy.session.has_key('login_username'):
69
57
kwargs["login_username"] = cherrypy.session['login_username']
70
58
return mytemplate.render(**kwargs)
72
def get_template_def(templatename, defname):
74
mytemplate = mylookup.get_template(templatename)
75
return mytemplate.get_def(defname).render()
61
""" Returns the language part of the url http://server/lang/* """
62
url_lang = cherrypy.request.path_info.split("/",2)[1]
63
if url_lang in supported_languages:
77
68
def validateEmail(email):
84
def validateUsername(username):
87
if re.match("^[a-zA-Z0-9\.]*$", username) != None:
92
76
The following are global variables extending the mako templates
97
page_parts = cherrypy.request.path_info.strip("/").split("/")
100
pagename = page_parts[0]
101
#if pagename= "" and len(path_parts)>1:
102
# pagename = path_parts[len(path_parts) - 2]
81
path_parts = cherrypy.request.path_info.strip("/").split("/")
82
pagename = path_parts[len(path_parts) - 1]
83
#if pagename= "" and len(path_parts)>1:
84
# pagename = path_parts[len(path_parts) - 2]