From d86965304fec4672498306c9c788f3d966db6aec Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Wed, 21 Jan 2009 00:11:19 +0100 Subject: [PATCH] add form validation validate input in ddportfolio controller input validation schema in model/form.py error message display and style added --- ddportfolioservice/controllers/ddportfolio.py | 10 ++++++++++ ddportfolioservice/model/form.py | 8 ++++++++ .../public/stylesheets/style.css | 4 ++++ ddportfolioservice/templates/showform.mako | 19 ++++++++++++++++--- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 ddportfolioservice/model/form.py create mode 100644 ddportfolioservice/public/stylesheets/style.css diff --git a/ddportfolioservice/controllers/ddportfolio.py b/ddportfolioservice/controllers/ddportfolio.py index 10dc215..8434b5f 100644 --- a/ddportfolioservice/controllers/ddportfolio.py +++ b/ddportfolioservice/controllers/ddportfolio.py @@ -1,6 +1,7 @@ import logging from ddportfolioservice.lib.base import * +from ddportfolioservice.model.form import * log = logging.getLogger(__name__) @@ -11,3 +12,12 @@ class DdportfolioController(BaseController): # return render('/some/template.mako') # or, Return a response return render('/showform.mako') + + def handle_post(self): + schema = DeveloperData() + try: + form_result = schema.to_python(request.params) + except formencode.validators.Invalid, error: + c.messages = { 'errors' : error.unpack_errors() } + return render('/showform.mako') + return ["done"] diff --git a/ddportfolioservice/model/form.py b/ddportfolioservice/model/form.py new file mode 100644 index 0000000..a4cba23 --- /dev/null +++ b/ddportfolioservice/model/form.py @@ -0,0 +1,8 @@ +import formencode + +class DeveloperData(formencode.Schema): + allow_extra_fields = True + filter_extra_fields = True + name = formencode.validators.String(not_empty=True) + email = formencode.validators.Email(not_empty=True) + username = formencode.validators.PlainText(not_empty=True) diff --git a/ddportfolioservice/public/stylesheets/style.css b/ddportfolioservice/public/stylesheets/style.css new file mode 100644 index 0000000..db49c40 --- /dev/null +++ b/ddportfolioservice/public/stylesheets/style.css @@ -0,0 +1,4 @@ +.errormsg { + font-size: 80%; + color: red; +} \ No newline at end of file diff --git a/ddportfolioservice/templates/showform.mako b/ddportfolioservice/templates/showform.mako index e2fbc99..55c83a4 100644 --- a/ddportfolioservice/templates/showform.mako +++ b/ddportfolioservice/templates/showform.mako @@ -3,16 +3,29 @@ ${_('Debian Developer Portfolio')} + ${h.stylesheet_link_tag('style')} ${h.start_form(h.url_for(action='handle_post'), method='post')}
${_('Debian Developer Portfolio')} -
+
${h.text_field('name', value=request.params.get('name', None))}
-
+
${h.text_field('email', value=request.params.get('email', None))}
-
+
${h.text_field('username', value=request.params.get('username', None))}
${h.submit(value=_('Build DD Portfolio URLs'))}