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
cf4179ad
Commit
cf4179ad
authored
Apr 10, 2012
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added ability to override form field.
parent
59cb6052
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
2 deletions
+44
-2
TODO.txt
TODO.txt
+0
-2
form.py
flask_adminex/ext/sqlamodel/form.py
+16
-0
base.py
flask_adminex/model/base.py
+10
-0
test_sqlamodel.py
flask_adminex/tests/test_sqlamodel.py
+18
-0
No files found.
TODO.txt
View file @
cf4179ad
...
...
@@ -8,8 +8,6 @@
- Verify how boolean field is rendered
- Filters
- Custom filters for date fields?
- Paginator class
- Custom CSS/JS in admin interface
- Checkboxes and mass operations
- SQLA Model Admin
- Many2Many support
...
...
flask_adminex/ext/sqlamodel/form.py
View file @
cf4179ad
...
...
@@ -58,6 +58,12 @@ class AdminModelConverter(ModelConverter):
return
None
def
_get_field_override
(
self
,
name
):
if
self
.
view
.
form_overrides
:
return
self
.
view
.
form_overrides
.
get
(
name
)
return
None
def
convert
(
self
,
model
,
mapper
,
prop
,
field_args
):
kwargs
=
{
'validators'
:
[],
...
...
@@ -82,6 +88,11 @@ class AdminModelConverter(ModelConverter):
else
:
kwargs
[
'validators'
]
.
append
(
validators
.
Required
())
# Override field type if necessary
override
=
self
.
_get_field_override
(
prop
.
key
)
if
override
:
return
override
(
**
kwargs
)
if
prop
.
direction
.
name
==
'MANYTOONE'
:
return
QuerySelectField
(
widget
=
form
.
ChosenSelectWidget
(),
**
kwargs
)
...
...
@@ -134,6 +145,11 @@ class AdminModelConverter(ModelConverter):
# Apply label
kwargs
[
'label'
]
=
self
.
_get_label
(
prop
.
key
,
kwargs
)
# Override field type if necessary
override
=
self
.
_get_field_override
(
prop
.
key
)
if
override
:
return
override
(
**
kwargs
)
return
super
(
AdminModelConverter
,
self
)
.
convert
(
model
,
mapper
,
prop
,
...
...
flask_adminex/model/base.py
View file @
cf4179ad
...
...
@@ -167,6 +167,16 @@ class BaseModelView(BaseView):
)
"""
form_overrides
=
None
"""
Dictionary of form column overrides.
Example::
class MyModelView(BaseModelView):
form_overrides = dict(name=wtf.FileField)
"""
# Various settings
page_size
=
20
"""
...
...
flask_adminex/tests/test_sqlamodel.py
View file @
cf4179ad
...
...
@@ -335,6 +335,24 @@ def test_form():
pass
def
test_form_override
():
app
,
db
,
admin
=
setup
()
class
Model
(
db
.
Model
):
id
=
db
.
Column
(
db
.
String
,
primary_key
=
True
)
test
=
db
.
Column
(
db
.
String
)
db
.
create_all
()
view1
=
CustomModelView
(
Model
,
db
.
session
,
endpoint
=
'view1'
)
view2
=
CustomModelView
(
Model
,
db
.
session
,
endpoint
=
'view2'
,
form_overrides
=
dict
(
test
=
wtf
.
FileField
))
admin
.
add_view
(
view1
)
admin
.
add_view
(
view2
)
eq_
(
view1
.
_create_form_class
.
test
.
field_class
,
wtf
.
TextField
)
eq_
(
view2
.
_create_form_class
.
test
.
field_class
,
wtf
.
FileField
)
def
test_relations
():
# TODO: test relations
pass
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