diff options
Diffstat (limited to 'forms.py')
-rw-r--r-- | forms.py | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -1,4 +1,4 @@ -from wtforms import HiddenField, PasswordField, validators +from wtforms import HiddenField, PasswordField, validators, ValidationError from wtfpeewee.orm import model_form, ModelConverter from flask.ext.wtf import Form from utils import Unique, ReadonlyField @@ -24,7 +24,7 @@ ChangeGroup = model_form(Group, base_class=Form, exclude=['api_id'], field_args= converter=ModelConverter(overrides={'name': ReadonlyField})) -CreatePad = model_form( +_CreatePad = model_form( Pad, base_class=Form, exclude=['api_id', 'created', 'group'], field_args={ 'name': {'validators': [ validators.Required(), @@ -35,5 +35,20 @@ CreatePad = model_form( converter=ModelConverter(overrides={'password': PasswordField})) +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: + try: + Pad.get(Pad.name == field.data, Pad.group == self.group) + raise ValidationError(u'A pad with this name already ' + 'exists in this group.') + except Pad.DoesNotExist: + pass + + class DeleteForm(Form): sure = HiddenField('are you sure', default='yes') |