1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
from flask.ext.wtf import Form
from wtforms import StringField, HiddenField, PasswordField, BooleanField, \
validators, ValidationError
from wtforms.ext.sqlalchemy.orm import model_form, ModelConverter
from app import db
from models import Group, Pad
from utils.forms import Unique, ReadonlyField, RedirectMixin
from utils.widgets import TextArea
CreateGroup = model_form(
Group, base_class=Form, only=['name', 'description', 'public', 'browsable'],
field_args={
'name': {'validators': [
validators.Required(),
validators.Regexp('^[a-zA-Z1-9_-]+$', message=u'Invalid group name '
'(only simple characters, numbers, - and _).'),
validators.Regexp('^[a-zA-Z1-9]', message=u'Group name should not '
'start with a special character.'),
Unique(Group, Group.name, message=u'A group with this name '
'already exists.')]
},
'description': {'widget': TextArea(rows=7)},
'public': {'validators': []},
'browsable': {'validators': []},
},
db_session=db.session)
ChangeGroup = model_form(
Group, base_class=Form, only=['name', 'description', 'public', 'browsable'],
field_args={
'description': {'widget': TextArea(rows=7)},
'public': {'validators': []},
'browsable': {'validators': []},
},
converter=ModelConverter({'name': ReadonlyField}),
db_session=db.session)
_CreatePad = model_form(
Pad, base_class=Form, exclude=['api_id', 'created', 'group'],
field_args={
'name': {'validators': [
validators.Required(),
validators.Regexp('^[a-zA-Z1-9_-]+$', message=u'Invalid pad name '
'(only simple characters, numbers, - and _).'),
validators.Regexp('^[a-zA-Z1-9]', message=u'Pad name should not '
'start with a special character.')]},
'public': {'validators': []},
},
converter=ModelConverter({'password': PasswordField}),
db_session=db.session)
class CreatePad(_CreatePad):
def __init__(self, formdata=None, obj=None, group=None, prefix='', **kwarg):
self.group = group
super(CreatePad, self).__init__(formdata, obj, prefix, **kwarg)
def validate_name(self, field):
if self.group is not None:
pad_query = Pad.query.filter_by(name=field.data, group=self.group)
if pad_query.count() > 0:
raise ValidationError(u'A pad with this name already '
'exists in this group.')
ChangePad = model_form(
Pad, base_class=Form, exclude=['api_id', 'created', 'group'],
field_args={
'public': {'validators': []},
},
converter=ModelConverter({'password': PasswordField,
'name': ReadonlyField}),
db_session=db.session)
class LoginForm(RedirectMixin, Form):
user = StringField('login', [validators.Required()])
password = PasswordField('password', [validators.Required()])
class DeleteForm(Form):
sure = HiddenField('are you sure', default='yes')
|