summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 02:58:24 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 02:58:24 +0100
commit7a91b816c414a7b3dc63190cdee005158b81d571 (patch)
tree45a8974bc5685b43050ecc00c66a83a106375731
parent411c19c7f952a834399232d17c4fe546cf0eaa41 (diff)
downloadpadlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.tar.gz
padlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.tar.bz2
padlite-teams-7a91b816c414a7b3dc63190cdee005158b81d571.zip
forms: validate pad name uniqueness in CreatePad
-rw-r--r--forms.py19
-rw-r--r--views.py2
2 files changed, 18 insertions, 3 deletions
diff --git a/forms.py b/forms.py
index 459839d..72848ad 100644
--- a/forms.py
+++ b/forms.py
@@ -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')
diff --git a/views.py b/views.py
index 495c0a3..31fe9b8 100644
--- a/views.py
+++ b/views.py
@@ -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)