~joaopinto/apt-portal/pre-modules

« back to all changes in this revision

Viewing changes to common/cherrypy_mako.py

  • Committer: Joao Pinto
  • Date: 2009-07-06 17:20:36 UTC
  • Revision ID: joao.pinto@getdeb.net-20090706172036-ilg4m4ne7oxn80z3
Include debfactory's apt2sql to simplify installation

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#
20
20
# This is a cherrypy / mako integration module
21
21
 
22
 
 
23
22
import cherrypy
24
23
import re
25
24
from urlparse import urlparse
26
25
from mako.template import Template
27
26
from mako.lookup import TemplateLookup
28
 
mylookup = None
29
 
 
30
 
 
31
 
""" 
32
 
        Sets the following directories:
33
 
                templates_directory - list of dirs to be searched for templates
34
 
                module_directory - directory to keep cached templates
35
 
"""
36
 
def set_directories(templates_directory, module_directory):
 
27
import re
 
28
 
 
29
# International support
 
30
supported_languages = ['en_US','pt_PT']
 
31
 
 
32
def set_mako_directories(templates_directory, module_directory):
37
33
        global mylookup
38
34
                
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']
48
 
        )
 
36
        mylookup = TemplateLookup(directories=templates_directory, \
 
37
                module_directory=module_directory, \
 
38
                output_encoding='utf-8', encoding_errors='replace')
49
39
 
50
 
""" TODO: Translation using gettext """
51
 
def _(txt):
52
 
        return txt
 
40
def serve_template(templatename, **kwargs):
 
41
        global mylookup
 
42
        mytemplate = mylookup.get_template(templatename)
53
43
        
54
 
def serve_template(templatename, **kwargs):
55
 
        global mylookup
56
 
        mytemplate = mylookup.get_template(templatename)
57
 
 
58
44
        # Global functions
59
 
        kwargs["_"] = _
 
45
        kwargs["_"] = translate_string 
60
46
        kwargs["session"] = session 
61
47
                
62
48
        # Check if we need to use a lang prefix
 
49
        lang = url_language()
 
50
        cherrypy.thread_data.lang =  lang
 
51
        kwargs["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)
71
59
 
72
 
def get_template_def(templatename, defname):
73
 
        global mylookup
74
 
        mytemplate = mylookup.get_template(templatename)
75
 
        return mytemplate.get_def(defname).render()
76
 
                
 
60
def url_language():
 
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:
 
64
        return "/"+url_lang
 
65
    return ""
 
66
    
 
67
 
77
68
def validateEmail(email):
78
69
 
79
70
        if len(email) > 7:
81
72
                        return True
82
73
        return False
83
74
 
84
 
def validateUsername(username):
85
 
 
86
 
        if len(username) > 0:
87
 
                if re.match("^[a-zA-Z0-9\.]*$", username) != None:
88
 
                        return True
89
 
        return False
90
 
 
91
75
"""
92
76
   The following are global variables extending the mako templates
93
77
"""
94
78
def pagename():
95
 
        """
96
 
        """
97
 
        page_parts = cherrypy.request.path_info.strip("/").split("/")
98
 
        if not page_parts:
99
 
                return None
100
 
        pagename = page_parts[0]
101
 
        #if pagename= "" and len(path_parts)>1:
102
 
        #    pagename = path_parts[len(path_parts) - 2]
103
 
        return pagename
 
79
    """
 
80
    """
 
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]
 
85
    return pagename
104
86
 
105
87
 
106
88
"""
112
94
                return cherrypy.session[key]
113
95
        return None
114
96
 
 
97
def translate_string(str):    
 
98
    """ This function is used with _("string") """
 
99
    if url_language() == "/pt_PT" and str == "Hello":
 
100
        return u"Olá"
 
101
    return str