Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
flask-admin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
flask-admin
Commits
c7a57c02
Commit
c7a57c02
authored
Nov 08, 2014
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #676 from arsgeografica/wtf2
WTForms 2 compatibility
parents
beb637fa
f836bf46
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
45 additions
and
47 deletions
+45
-47
.gitignore
.gitignore
+2
-0
fileadmin.py
flask_admin/contrib/fileadmin.py
+1
-1
form.py
flask_admin/contrib/peewee/form.py
+4
-1
form.py
flask_admin/contrib/sqla/form.py
+5
-5
view.py
flask_admin/contrib/sqla/view.py
+1
-1
fields.py
flask_admin/form/fields.py
+3
-3
upload.py
flask_admin/form/upload.py
+2
-2
base.py
flask_admin/model/base.py
+1
-1
fields.py
flask_admin/model/fields.py
+6
-7
form.py
flask_admin/model/form.py
+1
-1
test_basic.py
flask_admin/tests/mongoengine/test_basic.py
+4
-10
test_basic.py
flask_admin/tests/peeweemodel/test_basic.py
+3
-3
test_basic.py
flask_admin/tests/pymongo/test_basic.py
+2
-2
test_basic.py
flask_admin/tests/sqlamodel/test_basic.py
+5
-5
test_inlineform.py
flask_admin/tests/sqlamodel/test_inlineform.py
+1
-1
test_model.py
flask_admin/tests/test_model.py
+3
-3
setup.py
setup.py
+1
-1
No files found.
.gitignore
View file @
c7a57c02
...
@@ -23,3 +23,5 @@ examples/forms/files
...
@@ -23,3 +23,5 @@ examples/forms/files
.idea/
.idea/
*.sqlite
*.sqlite
env
env
*.egg
.eggs
flask_admin/contrib/fileadmin.py
View file @
c7a57c02
...
@@ -24,7 +24,7 @@ class NameForm(form.BaseForm):
...
@@ -24,7 +24,7 @@ class NameForm(form.BaseForm):
Validates if provided name is valid for *nix and Windows systems.
Validates if provided name is valid for *nix and Windows systems.
"""
"""
name
=
fields
.
Text
Field
()
name
=
fields
.
String
Field
()
regexp
=
re
.
compile
(
r'^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\";|/]+$'
)
regexp
=
re
.
compile
(
r'^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\";|/]+$'
)
...
...
flask_admin/contrib/peewee/form.py
View file @
c7a57c02
from
wtforms
import
fields
from
wtforms
import
fields
from
peewee
import
(
DateTimeField
,
DateField
,
TimeField
,
from
peewee
import
(
CharField
,
DateTimeField
,
DateField
,
TimeField
,
PrimaryKeyField
,
ForeignKeyField
,
BaseModel
)
PrimaryKeyField
,
ForeignKeyField
,
BaseModel
)
from
wtfpeewee.orm
import
ModelConverter
,
model_form
from
wtfpeewee.orm
import
ModelConverter
,
model_form
...
@@ -85,6 +85,9 @@ class CustomModelConverter(ModelConverter):
...
@@ -85,6 +85,9 @@ class CustomModelConverter(ModelConverter):
super
(
CustomModelConverter
,
self
)
.
__init__
(
additional
)
super
(
CustomModelConverter
,
self
)
.
__init__
(
additional
)
self
.
view
=
view
self
.
view
=
view
# @todo: This really should be done within wtfpeewee
self
.
defaults
[
CharField
]
=
fields
.
StringField
self
.
converters
[
PrimaryKeyField
]
=
self
.
handle_pk
self
.
converters
[
PrimaryKeyField
]
=
self
.
handle_pk
self
.
converters
[
DateTimeField
]
=
self
.
handle_datetime
self
.
converters
[
DateTimeField
]
=
self
.
handle_datetime
self
.
converters
[
DateField
]
=
self
.
handle_date
self
.
converters
[
DateField
]
=
self
.
handle_date
...
...
flask_admin/contrib/sqla/form.py
View file @
c7a57c02
...
@@ -274,7 +274,7 @@ class AdminModelConverter(ModelConverterBase):
...
@@ -274,7 +274,7 @@ class AdminModelConverter(ModelConverterBase):
field_args
[
'filters'
]
=
filters
field_args
[
'filters'
]
=
filters
self
.
_string_common
(
column
=
column
,
field_args
=
field_args
,
**
extra
)
self
.
_string_common
(
column
=
column
,
field_args
=
field_args
,
**
extra
)
return
fields
.
Text
Field
(
**
field_args
)
return
fields
.
String
Field
(
**
field_args
)
@
converts
(
'Text'
,
'UnicodeText'
,
@
converts
(
'Text'
,
'UnicodeText'
,
'sqlalchemy.types.LargeBinary'
,
'sqlalchemy.types.Binary'
)
'sqlalchemy.types.LargeBinary'
,
'sqlalchemy.types.Binary'
)
...
@@ -316,25 +316,25 @@ class AdminModelConverter(ModelConverterBase):
...
@@ -316,25 +316,25 @@ class AdminModelConverter(ModelConverterBase):
@
converts
(
'databases.mysql.MSYear'
)
@
converts
(
'databases.mysql.MSYear'
)
def
conv_MSYear
(
self
,
field_args
,
**
extra
):
def
conv_MSYear
(
self
,
field_args
,
**
extra
):
field_args
[
'validators'
]
.
append
(
validators
.
NumberRange
(
min
=
1901
,
max
=
2155
))
field_args
[
'validators'
]
.
append
(
validators
.
NumberRange
(
min
=
1901
,
max
=
2155
))
return
fields
.
Text
Field
(
**
field_args
)
return
fields
.
String
Field
(
**
field_args
)
@
converts
(
'databases.postgres.PGInet'
,
'dialects.postgresql.base.INET'
)
@
converts
(
'databases.postgres.PGInet'
,
'dialects.postgresql.base.INET'
)
def
conv_PGInet
(
self
,
field_args
,
**
extra
):
def
conv_PGInet
(
self
,
field_args
,
**
extra
):
field_args
.
setdefault
(
'label'
,
u'IP Address'
)
field_args
.
setdefault
(
'label'
,
u'IP Address'
)
field_args
[
'validators'
]
.
append
(
validators
.
IPAddress
())
field_args
[
'validators'
]
.
append
(
validators
.
IPAddress
())
return
fields
.
Text
Field
(
**
field_args
)
return
fields
.
String
Field
(
**
field_args
)
@
converts
(
'dialects.postgresql.base.MACADDR'
)
@
converts
(
'dialects.postgresql.base.MACADDR'
)
def
conv_PGMacaddr
(
self
,
field_args
,
**
extra
):
def
conv_PGMacaddr
(
self
,
field_args
,
**
extra
):
field_args
.
setdefault
(
'label'
,
u'MAC Address'
)
field_args
.
setdefault
(
'label'
,
u'MAC Address'
)
field_args
[
'validators'
]
.
append
(
validators
.
MacAddress
())
field_args
[
'validators'
]
.
append
(
validators
.
MacAddress
())
return
fields
.
Text
Field
(
**
field_args
)
return
fields
.
String
Field
(
**
field_args
)
@
converts
(
'dialects.postgresql.base.UUID'
)
@
converts
(
'dialects.postgresql.base.UUID'
)
def
conv_PGUuid
(
self
,
field_args
,
**
extra
):
def
conv_PGUuid
(
self
,
field_args
,
**
extra
):
field_args
.
setdefault
(
'label'
,
u'UUID'
)
field_args
.
setdefault
(
'label'
,
u'UUID'
)
field_args
[
'validators'
]
.
append
(
validators
.
UUID
())
field_args
[
'validators'
]
.
append
(
validators
.
UUID
())
return
fields
.
Text
Field
(
**
field_args
)
return
fields
.
String
Field
(
**
field_args
)
@
converts
(
'sqlalchemy.dialects.postgresql.base.ARRAY'
)
@
converts
(
'sqlalchemy.dialects.postgresql.base.ARRAY'
)
def
conv_ARRAY
(
self
,
field_args
,
**
extra
):
def
conv_ARRAY
(
self
,
field_args
,
**
extra
):
...
...
flask_admin/contrib/sqla/view.py
View file @
c7a57c02
...
@@ -146,7 +146,7 @@ class ModelView(BaseModelView):
...
@@ -146,7 +146,7 @@ class ModelView(BaseModelView):
class MyInlineModelConverter(AdminModelConverter):
class MyInlineModelConverter(AdminModelConverter):
def post_process(self, form_class, info):
def post_process(self, form_class, info):
form_class.value = wtf.
Text
Field('value')
form_class.value = wtf.
String
Field('value')
return form_class
return form_class
class MyAdminView(ModelView):
class MyAdminView(ModelView):
...
...
flask_admin/form/fields.py
View file @
c7a57c02
...
@@ -139,7 +139,7 @@ class Select2Field(fields.SelectField):
...
@@ -139,7 +139,7 @@ class Select2Field(fields.SelectField):
super
(
Select2Field
,
self
)
.
pre_validate
(
form
)
super
(
Select2Field
,
self
)
.
pre_validate
(
form
)
class
Select2TagsField
(
fields
.
Text
Field
):
class
Select2TagsField
(
fields
.
String
Field
):
"""`Select2 <http://ivaynberg.github.com/select2/#tags>`_ styled text field.
"""`Select2 <http://ivaynberg.github.com/select2/#tags>`_ styled text field.
You must include select2.js, form.js and select2 stylesheet for it to work.
You must include select2.js, form.js and select2 stylesheet for it to work.
"""
"""
...
...
flask_admin/form/upload.py
View file @
c7a57c02
...
@@ -109,11 +109,11 @@ class ImageUploadInput(object):
...
@@ -109,11 +109,11 @@ class ImageUploadInput(object):
# Fields
# Fields
class
FileUploadField
(
fields
.
Text
Field
):
class
FileUploadField
(
fields
.
String
Field
):
"""
"""
Customizable file-upload field.
Customizable file-upload field.
Saves file to configured path, handles updates and deletions. Inherits from `
Text
Field`,
Saves file to configured path, handles updates and deletions. Inherits from `
String
Field`,
resulting filename will be stored as string.
resulting filename will be stored as string.
"""
"""
widget
=
FileUploadInput
()
widget
=
FileUploadInput
()
...
...
flask_admin/model/base.py
View file @
c7a57c02
...
@@ -314,7 +314,7 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -314,7 +314,7 @@ class BaseModelView(BaseView, ActionsMixin):
For example::
For example::
class MyForm(Form):
class MyForm(Form):
name =
Text
Field('Name')
name =
String
Field('Name')
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
form = MyForm
form = MyForm
...
...
flask_admin/model/fields.py
View file @
c7a57c02
...
@@ -13,18 +13,17 @@ class InlineFieldList(FieldList):
...
@@ -13,18 +13,17 @@ class InlineFieldList(FieldList):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
InlineFieldList
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
InlineFieldList
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
__call__
(
self
,
**
kwargs
):
# Create template
# 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
# Small hack to remove separator from FormField
if
isinstance
(
self
.
template
,
FormField
):
if
isinstance
(
template
,
FormField
):
self
.
template
.
separator
=
''
template
.
separator
=
''
self
.
template
.
process
(
None
)
template
.
process
(
None
)
def
__call__
(
self
,
**
kwargs
):
return
self
.
widget
(
self
,
return
self
.
widget
(
self
,
template
=
self
.
template
,
template
=
template
,
check
=
self
.
display_row_controls
,
check
=
self
.
display_row_controls
,
**
kwargs
)
**
kwargs
)
...
...
flask_admin/model/form.py
View file @
c7a57c02
...
@@ -60,7 +60,7 @@ class InlineBaseFormAdmin(object):
...
@@ -60,7 +60,7 @@ class InlineBaseFormAdmin(object):
class MyInlineForm(InlineFormAdmin):
class MyInlineForm(InlineFormAdmin):
def postprocess_form(self, form):
def postprocess_form(self, form):
form.value =
Text
Field('value')
form.value =
String
Field('value')
return form
return form
class MyAdmin(ModelView):
class MyAdmin(ModelView):
...
...
flask_admin/tests/mongoengine/test_basic.py
View file @
c7a57c02
...
@@ -67,12 +67,6 @@ def test_model():
...
@@ -67,12 +67,6 @@ def test_model():
eq_
(
view
.
_search_supported
,
False
)
eq_
(
view
.
_search_supported
,
False
)
eq_
(
view
.
_filters
,
None
)
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
.
test1
.
field_class
,
fields
.
StringField
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
StringField
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
StringField
)
...
@@ -150,7 +144,7 @@ def test_extra_fields():
...
@@ -150,7 +144,7 @@ def test_extra_fields():
view
=
CustomModelView
(
view
=
CustomModelView
(
Model1
,
Model1
,
form_extra_fields
=
{
form_extra_fields
=
{
'extra_field'
:
fields
.
Text
Field
(
'Extra Field'
)
'extra_field'
:
fields
.
String
Field
(
'Extra Field'
)
}
}
)
)
admin
.
add_view
(
view
)
admin
.
add_view
(
view
)
...
@@ -177,7 +171,7 @@ def test_extra_field_order():
...
@@ -177,7 +171,7 @@ def test_extra_field_order():
Model1
,
Model1
,
form_columns
=
(
'extra_field'
,
'test1'
),
form_columns
=
(
'extra_field'
,
'test1'
),
form_extra_fields
=
{
form_extra_fields
=
{
'extra_field'
:
fields
.
Text
Field
(
'Extra Field'
)
'extra_field'
:
fields
.
String
Field
(
'Extra Field'
)
}
}
)
)
admin
.
add_view
(
view
)
admin
.
add_view
(
view
)
...
...
flask_admin/tests/peeweemodel/test_basic.py
View file @
c7a57c02
...
@@ -82,8 +82,8 @@ def test_model():
...
@@ -82,8 +82,8 @@ def test_model():
eq_
(
view
.
_filters
,
None
)
eq_
(
view
.
_filters
,
None
)
# Verify form
# Verify form
eq_
(
view
.
_create_form_class
.
test1
.
field_class
,
fields
.
Text
Field
)
eq_
(
view
.
_create_form_class
.
test1
.
field_class
,
fields
.
String
Field
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
Text
Field
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
String
Field
)
eq_
(
view
.
_create_form_class
.
test3
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test3
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test4
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test4
.
field_class
,
fields
.
TextAreaField
)
...
@@ -158,7 +158,7 @@ def test_extra_fields():
...
@@ -158,7 +158,7 @@ def test_extra_fields():
view
=
CustomModelView
(
view
=
CustomModelView
(
Model1
,
Model1
,
form_extra_fields
=
{
form_extra_fields
=
{
'extra_field'
:
fields
.
Text
Field
(
'Extra Field'
)
'extra_field'
:
fields
.
String
Field
(
'Extra Field'
)
}
}
)
)
admin
.
add_view
(
view
)
admin
.
add_view
(
view
)
...
...
flask_admin/tests/pymongo/test_basic.py
View file @
c7a57c02
...
@@ -8,8 +8,8 @@ from . import setup
...
@@ -8,8 +8,8 @@ from . import setup
class
TestForm
(
form
.
Form
):
class
TestForm
(
form
.
Form
):
test1
=
fields
.
Text
Field
(
'Test1'
)
test1
=
fields
.
String
Field
(
'Test1'
)
test2
=
fields
.
Text
Field
(
'Test2'
)
test2
=
fields
.
String
Field
(
'Test2'
)
class
TestView
(
ModelView
):
class
TestView
(
ModelView
):
...
...
flask_admin/tests/sqlamodel/test_basic.py
View file @
c7a57c02
...
@@ -91,8 +91,8 @@ def test_model():
...
@@ -91,8 +91,8 @@ def test_model():
eq_
(
view
.
_filters
,
None
)
eq_
(
view
.
_filters
,
None
)
# Verify form
# Verify form
eq_
(
view
.
_create_form_class
.
test1
.
field_class
,
fields
.
Text
Field
)
eq_
(
view
.
_create_form_class
.
test1
.
field_class
,
fields
.
String
Field
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
Text
Field
)
eq_
(
view
.
_create_form_class
.
test2
.
field_class
,
fields
.
String
Field
)
eq_
(
view
.
_create_form_class
.
test3
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test3
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test4
.
field_class
,
fields
.
TextAreaField
)
eq_
(
view
.
_create_form_class
.
test4
.
field_class
,
fields
.
TextAreaField
)
...
@@ -567,7 +567,7 @@ def test_form_override():
...
@@ -567,7 +567,7 @@ def test_form_override():
admin
.
add_view
(
view1
)
admin
.
add_view
(
view1
)
admin
.
add_view
(
view2
)
admin
.
add_view
(
view2
)
eq_
(
view1
.
_create_form_class
.
test
.
field_class
,
fields
.
Text
Field
)
eq_
(
view1
.
_create_form_class
.
test
.
field_class
,
fields
.
String
Field
)
eq_
(
view2
.
_create_form_class
.
test
.
field_class
,
fields
.
FileField
)
eq_
(
view2
.
_create_form_class
.
test
.
field_class
,
fields
.
FileField
)
...
@@ -711,7 +711,7 @@ def test_extra_fields():
...
@@ -711,7 +711,7 @@ def test_extra_fields():
view
=
CustomModelView
(
view
=
CustomModelView
(
Model1
,
db
.
session
,
Model1
,
db
.
session
,
form_extra_fields
=
{
form_extra_fields
=
{
'extra_field'
:
fields
.
Text
Field
(
'Extra Field'
)
'extra_field'
:
fields
.
String
Field
(
'Extra Field'
)
}
}
)
)
admin
.
add_view
(
view
)
admin
.
add_view
(
view
)
...
@@ -738,7 +738,7 @@ def test_extra_field_order():
...
@@ -738,7 +738,7 @@ def test_extra_field_order():
Model1
,
db
.
session
,
Model1
,
db
.
session
,
form_columns
=
(
'extra_field'
,
'test1'
),
form_columns
=
(
'extra_field'
,
'test1'
),
form_extra_fields
=
{
form_extra_fields
=
{
'extra_field'
:
fields
.
Text
Field
(
'Extra Field'
)
'extra_field'
:
fields
.
String
Field
(
'Extra Field'
)
}
}
)
)
admin
.
add_view
(
view
)
admin
.
add_view
(
view
)
...
...
flask_admin/tests/sqlamodel/test_inlineform.py
View file @
c7a57c02
...
@@ -45,7 +45,7 @@ def test_inline_form():
...
@@ -45,7 +45,7 @@ def test_inline_form():
eq_
(
view
.
endpoint
,
'user'
)
eq_
(
view
.
endpoint
,
'user'
)
# Verify form
# Verify form
eq_
(
view
.
_create_form_class
.
name
.
field_class
,
fields
.
Text
Field
)
eq_
(
view
.
_create_form_class
.
name
.
field_class
,
fields
.
String
Field
)
eq_
(
view
.
_create_form_class
.
info
.
field_class
,
InlineModelFormList
)
eq_
(
view
.
_create_form_class
.
info
.
field_class
,
InlineModelFormList
)
rv
=
client
.
get
(
'/admin/user/'
)
rv
=
client
.
get
(
'/admin/user/'
)
...
...
flask_admin/tests/test_model.py
View file @
c7a57c02
...
@@ -21,9 +21,9 @@ class Model(object):
...
@@ -21,9 +21,9 @@ class Model(object):
class
Form
(
form
.
BaseForm
):
class
Form
(
form
.
BaseForm
):
col1
=
fields
.
Text
Field
()
col1
=
fields
.
String
Field
()
col2
=
fields
.
Text
Field
()
col2
=
fields
.
String
Field
()
col3
=
fields
.
Text
Field
()
col3
=
fields
.
String
Field
()
class
SimpleFilter
(
filters
.
BaseFilter
):
class
SimpleFilter
(
filters
.
BaseFilter
):
...
...
setup.py
View file @
c7a57c02
...
@@ -45,7 +45,7 @@ setup(
...
@@ -45,7 +45,7 @@ setup(
platforms
=
'any'
,
platforms
=
'any'
,
install_requires
=
[
install_requires
=
[
'Flask>=0.7'
,
'Flask>=0.7'
,
'wtforms
<2.0
'
'wtforms'
],
],
tests_require
=
[
tests_require
=
[
'nose>=1.0'
,
'nose>=1.0'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment