From 4d81829ff47208ffe19eb3bd2d472a5344844374 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 12 Jan 2016 03:16:01 +0100 Subject: forms: Fix customization of input fields The sqlalchemy extension of wtforms does not allow to customize the generated field for specific columns, but only the generated widget. --- forms.py | 13 +++++++------ utils/forms.py | 7 ------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/forms.py b/forms.py index 9a2ea85..e1dab0f 100644 --- a/forms.py +++ b/forms.py @@ -2,11 +2,12 @@ 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 wtforms.widgets import PasswordInput from app import db from models import Group, Pad -from utils.forms import Unique, ReadonlyField, RedirectMixin -from utils.widgets import TextArea +from utils.forms import Unique, RedirectMixin +from utils.widgets import TextArea, Static CreateGroup = model_form( @@ -31,11 +32,11 @@ CreateGroup = model_form( ChangeGroup = model_form( Group, base_class=Form, only=['name', 'description', 'public', 'browsable'], field_args={ + 'name': {'widget': Static()}, 'description': {'widget': TextArea(rows=7)}, 'public': {'validators': []}, 'browsable': {'validators': []}, }, - converter=ModelConverter({'name': ReadonlyField}), db_session=db.session) @@ -49,8 +50,8 @@ _CreatePad = model_form( validators.Regexp('^[a-zA-Z1-9]', message=u'Pad name should not ' 'start with a special character.')]}, 'public': {'validators': []}, + 'password': {'widget': PasswordInput()}, }, - converter=ModelConverter({'password': PasswordField}), db_session=db.session) @@ -69,10 +70,10 @@ class CreatePad(_CreatePad): ChangePad = model_form( Pad, base_class=Form, exclude=['api_id', 'created', 'group'], field_args={ + 'name': {'widget': Static()}, 'public': {'validators': []}, + 'password': {'widget': PasswordInput()}, }, - converter=ModelConverter({'password': PasswordField, - 'name': ReadonlyField}), db_session=db.session) diff --git a/utils/forms.py b/utils/forms.py index 59afe61..01120d0 100644 --- a/utils/forms.py +++ b/utils/forms.py @@ -19,13 +19,6 @@ class Unique(object): raise ValidationError(self.message) -class ReadonlyField(Field): - widget = Static() - - def process_formdata(self, _): - pass - - class RedirectMixin(object): next = HiddenField() -- cgit v1.2.3-1-g7c22