annotate pylons_app/model/forms.py @ 136:36102488d634

Added empty changeset to use in newly created repository, and used this inside a hg model in repos list
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 09 May 2010 14:13:20 +0200
parents a886f5eba757
children 556473ba0399
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 """ this is forms validation classes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2 http://formencode.org/module-formencode.validators.html
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 for list off all availible validators
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 we can create our own validators
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 The table below outlines the options which can be used in a schema in addition to the validators themselves
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 pre_validators [] These validators will be applied before the schema
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 chained_validators [] These validators will be applied after the schema
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 allow_extra_fields False If True, then it is not an error when keys that aren't associated with a validator are present
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 filter_extra_fields False If True, then keys that aren't associated with a validator are removed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 if_key_missing NoDefault If this is given, then any keys that aren't available but are expected will be replaced with this value (and then validated). This does not override a present .if_missing attribute on validators. NoDefault is a special FormEncode class to mean that no default values has been specified and therefore missing keys shouldn't take a default value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 ignore_key_missing False If True, then missing keys will be missing in the result, if the validator doesn't have .if_missing on it already
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 <name> = formencode.validators.<name of validator>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 <name> must equal form name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18 list=[1,2,3,4,5]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 for select use formencode.All(OneOf(list), Int())
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21 """
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23 import formencode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 from formencode.validators import UnicodeString, OneOf, Int, Number, Regex
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25 from pylons.i18n.translation import _
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 from webhelpers.pylonslib.secure_form import authentication_token
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 class ValidAuthToken(formencode.validators.FancyValidator):
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29 messages = {'invalid_token':_('Token mismatch')}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 def validate_python(self, value, state):
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 if value != authentication_token():
45
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
34 raise formencode.Invalid(self.message('invalid_token', state, search_number=value), value, state)
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36
45
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
37 class LoginForm(formencode.Schema):
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
38 allow_extra_fields = True
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
39 filter_extra_fields = True
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
40 username = UnicodeString(
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
41 strip=True,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
42 min=3,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
43 not_empty=True,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
44 messages={
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
45 'empty':_('Please enter a login'),
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
46 'tooShort':_('Enter a value %(min)i characters long or more')}
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
47 )
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48
45
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
49 password = UnicodeString(
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
50 strip=True,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
51 min=3,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
52 not_empty=True,
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
53 messages={
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
54 'empty':_('Please enter a password'),
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
55 'tooShort':_('Enter a value %(min)i characters long or more')}
a886f5eba757 implemented admin page login
marcink
parents: 0
diff changeset
56 )
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58