diff options
author | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2014-11-19 02:58:24 +0100 |
---|---|---|
committer | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2014-11-19 02:58:24 +0100 |
commit | 7a91b816c414a7b3dc63190cdee005158b81d571 (patch) | |
tree | 45a8974bc5685b43050ecc00c66a83a106375731 | |
parent | 411c19c7f952a834399232d17c4fe546cf0eaa41 (diff) | |
download | padlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.tar.gz padlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.tar.bz2 padlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.zip |
forms: validate pad name uniqueness in CreatePad
-rw-r--r-- | forms.py | 19 | ||||
-rw-r--r-- | views.py | 2 |
2 files changed, 18 insertions, 3 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') @@ -107,7 +107,7 @@ def group_join(group_name, member_id, accept): @auth.login_required def pad_create(group_name): group = get_group_or_404(Group.name == group_name, Member.admin == True) - form = CreatePad(request.form) + form = CreatePad(request.form, group=group) if form.validate_on_submit(): pad = Pad() form.populate_obj(pad) |