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
1ace7047
Commit
1ace7047
authored
Dec 06, 2015
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1127 from pawl/issue_1094_attempt_2
Fix regex validators when using form_args
parents
4e42651f
be488d2a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
78 additions
and
12 deletions
+78
-12
form.py
flask_admin/contrib/mongoengine/form.py
+5
-4
form.py
flask_admin/contrib/sqla/form.py
+5
-4
test_basic.py
flask_admin/tests/mongoengine/test_basic.py
+20
-1
test_basic.py
flask_admin/tests/peeweemodel/test_basic.py
+26
-1
test_basic.py
flask_admin/tests/sqla/test_basic.py
+22
-2
No files found.
flask_admin/contrib/mongoengine/form.py
View file @
1ace7047
from
copy
import
deepcopy
from
mongoengine
import
ReferenceField
,
ListField
from
mongoengine.base
import
BaseDocument
,
DocumentMetaclass
,
get_document
...
...
@@ -70,8 +68,11 @@ class CustomModelConverter(orm.ModelConverter):
}
if
field_args
:
# prevent modification of self.form_args
kwargs
.
update
(
deepcopy
(
field_args
))
kwargs
.
update
(
field_args
)
if
kwargs
[
'validators'
]:
# Create a copy of the list since we will be modifying it.
kwargs
[
'validators'
]
=
list
(
kwargs
[
'validators'
])
if
field
.
required
:
kwargs
[
'validators'
]
.
append
(
validators
.
InputRequired
())
...
...
flask_admin/contrib/sqla/form.py
View file @
1ace7047
import
warnings
from
copy
import
deepcopy
from
wtforms
import
fields
,
validators
from
sqlalchemy
import
Boolean
,
Column
...
...
@@ -143,8 +141,11 @@ class AdminModelConverter(ModelConverterBase):
}
if
field_args
:
# prevent modification of self.form_args
kwargs
.
update
(
deepcopy
(
field_args
))
kwargs
.
update
(
field_args
)
if
kwargs
[
'validators'
]:
# Create a copy of the list since we will be modifying it.
kwargs
[
'validators'
]
=
list
(
kwargs
[
'validators'
])
# Check if it is relation or property
if
hasattr
(
prop
,
'direction'
):
...
...
flask_admin/tests/mongoengine/test_basic.py
View file @
1ace7047
...
...
@@ -6,7 +6,7 @@ from flask_admin._compat import PY2, as_unicode
if
not
PY2
:
raise
SkipTest
(
'MongoEngine is not Python 3 compatible'
)
from
wtforms
import
fields
from
wtforms
import
fields
,
validators
from
flask_admin
import
form
from
flask_admin.contrib.mongoengine
import
ModelView
...
...
@@ -1040,6 +1040,25 @@ def test_form_flat_choices():
eq_
(
form
.
name
.
choices
,
[(
'a'
,
'a'
),
(
'b'
,
'b'
),
(
'c'
,
'c'
)])
def
test_form_args
():
app
,
db
,
admin
=
setup
()
class
Model
(
db
.
Document
):
test
=
db
.
StringField
(
required
=
True
)
shared_form_args
=
{
'test'
:
{
'validators'
:
[
validators
.
Regexp
(
'test'
)]}}
view
=
CustomModelView
(
Model
,
form_args
=
shared_form_args
)
admin
.
add_view
(
view
)
# ensure shared field_args don't create duplicate validators
create_form
=
view
.
create_form
()
eq_
(
len
(
create_form
.
test
.
validators
),
2
)
edit_form
=
view
.
edit_form
()
eq_
(
len
(
edit_form
.
test
.
validators
),
2
)
def
test_form_args_embeddeddoc
():
app
,
db
,
admin
=
setup
()
...
...
flask_admin/tests/peeweemodel/test_basic.py
View file @
1ace7047
...
...
@@ -8,7 +8,7 @@ if not PY2:
import
peewee
from
wtforms
import
fields
from
wtforms
import
fields
,
validators
from
flask_admin
import
form
from
flask_admin._compat
import
iteritems
...
...
@@ -910,6 +910,31 @@ def test_custom_form_base():
ok_
(
isinstance
(
create_form
,
TestForm
))
def
test_form_args
():
app
,
db
,
admin
=
setup
()
class
BaseModel
(
peewee
.
Model
):
class
Meta
:
database
=
db
class
Model
(
BaseModel
):
test
=
peewee
.
CharField
(
null
=
False
)
Model
.
create_table
()
shared_form_args
=
{
'test'
:
{
'validators'
:
[
validators
.
Regexp
(
'test'
)]}}
view
=
CustomModelView
(
Model
,
form_args
=
shared_form_args
)
admin
.
add_view
(
view
)
# ensure shared field_args don't create duplicate validators
create_form
=
view
.
create_form
()
eq_
(
len
(
create_form
.
test
.
validators
),
2
)
edit_form
=
view
.
edit_form
()
eq_
(
len
(
edit_form
.
test
.
validators
),
2
)
def
test_ajax_fk
():
app
,
db
,
admin
=
setup
()
...
...
flask_admin/tests/sqla/test_basic.py
View file @
1ace7047
from
nose.tools
import
eq_
,
ok_
,
raises
,
assert_true
from
wtforms
import
fields
from
wtforms
import
fields
,
validators
from
flask_admin
import
form
from
flask_admin._compat
import
as_unicode
...
...
@@ -1441,7 +1441,27 @@ def test_form_columns():
ok_
(
type
(
form3
.
model
)
.
__name__
==
'QuerySelectField'
)
# TODO: form_args
def
test_form_args
():
app
,
db
,
admin
=
setup
()
class
Model
(
db
.
Model
):
id
=
db
.
Column
(
db
.
String
,
primary_key
=
True
)
test
=
db
.
Column
(
db
.
String
,
nullable
=
False
)
db
.
create_all
()
shared_form_args
=
{
'test'
:
{
'validators'
:
[
validators
.
Regexp
(
'test'
)]}}
view
=
CustomModelView
(
Model
,
db
.
session
,
form_args
=
shared_form_args
)
admin
.
add_view
(
view
)
create_form
=
view
.
create_form
()
eq_
(
len
(
create_form
.
test
.
validators
),
2
)
# ensure shared field_args don't create duplicate validators
edit_form
=
view
.
edit_form
()
eq_
(
len
(
edit_form
.
test
.
validators
),
2
)
def
test_form_override
():
...
...
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