source: cows_wps/trunk/cows_wps/renderer/form_renderer.py @ 5955

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows_wps/trunk/cows_wps/renderer/form_renderer.py@5955
Revision 5955, 1.7 KB checked in by astephen, 11 years ago (diff)

lots of new stuff.

Line 
1import os
2
3from genshi.template import TemplateLoader
4from genshi.builder import * 
5from genshi import HTML
6
7
8class FormRenderer(object):
9    """
10    A set of rendering methods for HTML forms.
11    """
12
13    def __init__(self):
14        # Instantiate Genshi template loader
15        self.templateLoader = TemplateLoader(
16           os.path.join(os.getcwd(), 'cows_wps/templates'),
17           auto_reload=True)
18
19    def htmlify(self, html): return HTML(html)
20
21    def renderRadioButton(self, name, is_boolean=True, values=None):
22        """
23        Returns HTML of radio button.
24        """
25        if is_boolean == True:
26            values = ("true", "false")
27
28        html = ""
29        for value in values:
30            html += """         <input type="radio" id="%s" name="%s" value="%s" />
31                <label for="%s">%s</label><br />\n"""   
32
33        return html
34
35    def renderTextInput(self, name, dtype):
36        """
37        Returns HTML for text input including onChange validator.
38        """
39        allowed_dtypes = ("float", "int", "string")
40        if dtype not in allowed_dtypes:
41            raise Exception("Invalid type sent to FormRenderer.renderTextInput(): %s" % dtype)
42
43        validators = {"int": ("/^[0-9]+$/", "The %s input must be an integer." % name), 
44                      "float": ("/^(([0-9]+\.[0-9]+)|([0-9]+\.)|(\.[0-9]))$/", "The %s input must be a decimal number." % name),
45                      "string": ("/[0-9a-zA-Z]+/", "The %s input must include text characters." % name)}
46
47        (regex, msg) = validators[dtype]
48 
49        html = """<input type="text" name="%s" id="%s" value="" onChange="validateTextInput(this.value, %s, '%s');" /><br />\n""" % (name, name, regex, msg)
50        return html
51
52                 
Note: See TracBrowser for help on using the repository browser.