Commit c7a57c02 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #676 from arsgeografica/wtf2

WTForms 2 compatibility
parents beb637fa f836bf46
......@@ -23,3 +23,5 @@ examples/forms/files
.idea/
*.sqlite
env
*.egg
.eggs
......@@ -24,7 +24,7 @@ class NameForm(form.BaseForm):
Validates if provided name is valid for *nix and Windows systems.
"""
name = fields.TextField()
name = fields.StringField()
regexp = re.compile(r'^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\";|/]+$')
......
from wtforms import fields
from peewee import (DateTimeField, DateField, TimeField,
from peewee import (CharField, DateTimeField, DateField, TimeField,
PrimaryKeyField, ForeignKeyField, BaseModel)
from wtfpeewee.orm import ModelConverter, model_form
......@@ -85,6 +85,9 @@ class CustomModelConverter(ModelConverter):
super(CustomModelConverter, self).__init__(additional)
self.view = view
# @todo: This really should be done within wtfpeewee
self.defaults[CharField] = fields.StringField
self.converters[PrimaryKeyField] = self.handle_pk
self.converters[DateTimeField] = self.handle_datetime
self.converters[DateField] = self.handle_date
......
......@@ -274,7 +274,7 @@ class AdminModelConverter(ModelConverterBase):
field_args['filters'] = filters
self._string_common(column=column, field_args=field_args, **extra)
return fields.TextField(**field_args)
return fields.StringField(**field_args)
@converts('Text', 'UnicodeText',
'sqlalchemy.types.LargeBinary', 'sqlalchemy.types.Binary')
......@@ -316,25 +316,25 @@ class AdminModelConverter(ModelConverterBase):
@converts('databases.mysql.MSYear')
def conv_MSYear(self, field_args, **extra):
field_args['validators'].append(validators.NumberRange(min=1901, max=2155))
return fields.TextField(**field_args)
return fields.StringField(**field_args)
@converts('databases.postgres.PGInet', 'dialects.postgresql.base.INET')
def conv_PGInet(self, field_args, **extra):
field_args.setdefault('label', u'IP Address')
field_args['validators'].append(validators.IPAddress())
return fields.TextField(**field_args)
return fields.StringField(**field_args)
@converts('dialects.postgresql.base.MACADDR')
def conv_PGMacaddr(self, field_args, **extra):
field_args.setdefault('label', u'MAC Address')
field_args['validators'].append(validators.MacAddress())
return fields.TextField(**field_args)
return fields.StringField(**field_args)
@converts('dialects.postgresql.base.UUID')
def conv_PGUuid(self, field_args, **extra):
field_args.setdefault('label', u'UUID')
field_args['validators'].append(validators.UUID())
return fields.TextField(**field_args)
return fields.StringField(**field_args)
@converts('sqlalchemy.dialects.postgresql.base.ARRAY')
def conv_ARRAY(self, field_args, **extra):
......
......@@ -146,7 +146,7 @@ class ModelView(BaseModelView):
class MyInlineModelConverter(AdminModelConverter):
def post_process(self, form_class, info):
form_class.value = wtf.TextField('value')
form_class.value = wtf.StringField('value')
return form_class
class MyAdminView(ModelView):
......
......@@ -139,7 +139,7 @@ class Select2Field(fields.SelectField):
super(Select2Field, self).pre_validate(form)
class Select2TagsField(fields.TextField):
class Select2TagsField(fields.StringField):
"""`Select2 <http://ivaynberg.github.com/select2/#tags>`_ styled text field.
You must include select2.js, form.js and select2 stylesheet for it to work.
"""
......
......@@ -109,11 +109,11 @@ class ImageUploadInput(object):
# Fields
class FileUploadField(fields.TextField):
class FileUploadField(fields.StringField):
"""
Customizable file-upload field.
Saves file to configured path, handles updates and deletions. Inherits from `TextField`,
Saves file to configured path, handles updates and deletions. Inherits from `StringField`,
resulting filename will be stored as string.
"""
widget = FileUploadInput()
......
......@@ -314,7 +314,7 @@ class BaseModelView(BaseView, ActionsMixin):
For example::
class MyForm(Form):
name = TextField('Name')
name = StringField('Name')
class MyModelView(BaseModelView):
form = MyForm
......
......@@ -13,18 +13,17 @@ class InlineFieldList(FieldList):
def __init__(self, *args, **kwargs):
super(InlineFieldList, self).__init__(*args, **kwargs)
def __call__(self, **kwargs):
# Create template
self.template = self.unbound_field.bind(form=None, name='')
template = self.unbound_field.bind(form=None, name='')
# Small hack to remove separator from FormField
if isinstance(self.template, FormField):
self.template.separator = ''
if isinstance(template, FormField):
template.separator = ''
self.template.process(None)
template.process(None)
def __call__(self, **kwargs):
return self.widget(self,
template=self.template,
template=template,
check=self.display_row_controls,
**kwargs)
......
......@@ -60,7 +60,7 @@ class InlineBaseFormAdmin(object):
class MyInlineForm(InlineFormAdmin):
def postprocess_form(self, form):
form.value = TextField('value')
form.value = StringField('value')
return form
class MyAdmin(ModelView):
......
......@@ -67,12 +67,6 @@ def test_model():
eq_(view._search_supported, False)
eq_(view._filters, None)
# Verify form
# TODO: Figure out why there's inconsistency
try:
eq_(view._create_form_class.test1.field_class, fields.TextField)
eq_(view._create_form_class.test2.field_class, fields.TextField)
except AssertionError:
eq_(view._create_form_class.test1.field_class, fields.StringField)
eq_(view._create_form_class.test2.field_class, fields.StringField)
......@@ -150,7 +144,7 @@ def test_extra_fields():
view = CustomModelView(
Model1,
form_extra_fields={
'extra_field': fields.TextField('Extra Field')
'extra_field': fields.StringField('Extra Field')
}
)
admin.add_view(view)
......@@ -177,7 +171,7 @@ def test_extra_field_order():
Model1,
form_columns=('extra_field', 'test1'),
form_extra_fields={
'extra_field': fields.TextField('Extra Field')
'extra_field': fields.StringField('Extra Field')
}
)
admin.add_view(view)
......
......@@ -82,8 +82,8 @@ def test_model():
eq_(view._filters, None)
# Verify form
eq_(view._create_form_class.test1.field_class, fields.TextField)
eq_(view._create_form_class.test2.field_class, fields.TextField)
eq_(view._create_form_class.test1.field_class, fields.StringField)
eq_(view._create_form_class.test2.field_class, fields.StringField)
eq_(view._create_form_class.test3.field_class, fields.TextAreaField)
eq_(view._create_form_class.test4.field_class, fields.TextAreaField)
......@@ -158,7 +158,7 @@ def test_extra_fields():
view = CustomModelView(
Model1,
form_extra_fields={
'extra_field': fields.TextField('Extra Field')
'extra_field': fields.StringField('Extra Field')
}
)
admin.add_view(view)
......
......@@ -8,8 +8,8 @@ from . import setup
class TestForm(form.Form):
test1 = fields.TextField('Test1')
test2 = fields.TextField('Test2')
test1 = fields.StringField('Test1')
test2 = fields.StringField('Test2')
class TestView(ModelView):
......
......@@ -91,8 +91,8 @@ def test_model():
eq_(view._filters, None)
# Verify form
eq_(view._create_form_class.test1.field_class, fields.TextField)
eq_(view._create_form_class.test2.field_class, fields.TextField)
eq_(view._create_form_class.test1.field_class, fields.StringField)
eq_(view._create_form_class.test2.field_class, fields.StringField)
eq_(view._create_form_class.test3.field_class, fields.TextAreaField)
eq_(view._create_form_class.test4.field_class, fields.TextAreaField)
......@@ -567,7 +567,7 @@ def test_form_override():
admin.add_view(view1)
admin.add_view(view2)
eq_(view1._create_form_class.test.field_class, fields.TextField)
eq_(view1._create_form_class.test.field_class, fields.StringField)
eq_(view2._create_form_class.test.field_class, fields.FileField)
......@@ -711,7 +711,7 @@ def test_extra_fields():
view = CustomModelView(
Model1, db.session,
form_extra_fields={
'extra_field': fields.TextField('Extra Field')
'extra_field': fields.StringField('Extra Field')
}
)
admin.add_view(view)
......@@ -738,7 +738,7 @@ def test_extra_field_order():
Model1, db.session,
form_columns=('extra_field', 'test1'),
form_extra_fields={
'extra_field': fields.TextField('Extra Field')
'extra_field': fields.StringField('Extra Field')
}
)
admin.add_view(view)
......
......@@ -45,7 +45,7 @@ def test_inline_form():
eq_(view.endpoint, 'user')
# Verify form
eq_(view._create_form_class.name.field_class, fields.TextField)
eq_(view._create_form_class.name.field_class, fields.StringField)
eq_(view._create_form_class.info.field_class, InlineModelFormList)
rv = client.get('/admin/user/')
......
......@@ -21,9 +21,9 @@ class Model(object):
class Form(form.BaseForm):
col1 = fields.TextField()
col2 = fields.TextField()
col3 = fields.TextField()
col1 = fields.StringField()
col2 = fields.StringField()
col3 = fields.StringField()
class SimpleFilter(filters.BaseFilter):
......
......@@ -45,7 +45,7 @@ setup(
platforms='any',
install_requires=[
'Flask>=0.7',
'wtforms<2.0'
'wtforms'
],
tests_require=[
'nose>=1.0',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment