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
1fdfd3f3
Commit
1fdfd3f3
authored
Jun 21, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed #242
parent
8c3f7533
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
58 additions
and
1 deletion
+58
-1
form.py
flask_admin/contrib/mongoengine/form.py
+54
-0
view.py
flask_admin/contrib/mongoengine/view.py
+4
-1
No files found.
flask_admin/contrib/mongoengine/form.py
View file @
1fdfd3f3
from
mongoengine
import
ReferenceField
from
wtforms
import
validators
from
flask.ext.mongoengine.wtf
import
orm
,
fields
from
flask.ext.admin
import
form
...
...
@@ -16,6 +17,59 @@ class CustomModelConverter(orm.ModelConverter):
Injects various Flask-Admin widgets and handles lists with
customized InlineFieldList field.
"""
def
__init__
(
self
,
view
):
super
(
CustomModelConverter
,
self
)
.
__init__
()
self
.
view
=
view
def
_get_field_override
(
self
,
name
):
form_overrides
=
getattr
(
self
.
view
,
'form_overrides'
,
None
)
if
form_overrides
:
return
form_overrides
.
get
(
name
)
return
None
def
convert
(
self
,
model
,
field
,
field_args
):
kwargs
=
{
'label'
:
getattr
(
field
,
'verbose_name'
,
field
.
name
),
'description'
:
field
.
help_text
or
''
,
'validators'
:
[],
'filters'
:
[],
'default'
:
field
.
default
,
}
if
field_args
:
kwargs
.
update
(
field_args
)
if
field
.
required
:
kwargs
[
'validators'
]
.
append
(
validators
.
Required
())
else
:
kwargs
[
'validators'
]
.
append
(
validators
.
Optional
())
ftype
=
type
(
field
)
.
__name__
if
field
.
choices
:
kwargs
[
'choices'
]
=
field
.
choices
if
ftype
in
self
.
converters
:
kwargs
[
"coerce"
]
=
self
.
coerce
(
ftype
)
if
kwargs
.
pop
(
'multiple'
,
False
):
return
fields
.
SelectMultipleField
(
**
kwargs
)
return
fields
.
SelectField
(
**
kwargs
)
ftype
=
type
(
field
)
.
__name__
if
hasattr
(
field
,
'to_form_field'
):
return
field
.
to_form_field
(
model
,
kwargs
)
override
=
self
.
_get_field_override
(
field
.
name
)
if
override
:
return
override
(
**
kwargs
)
if
ftype
in
self
.
converters
:
return
self
.
converters
[
ftype
](
model
,
field
,
kwargs
)
@
orm
.
converts
(
'DateTimeField'
)
def
conv_DateTime
(
self
,
model
,
field
,
kwargs
):
kwargs
[
'widget'
]
=
form
.
DateTimePickerWidget
()
...
...
flask_admin/contrib/mongoengine/view.py
View file @
1fdfd3f3
...
...
@@ -62,6 +62,9 @@ class ModelView(BaseModelView):
Model form conversion class. Use this to implement custom
field conversion logic.
Custom class should be derived from the
`flask.ext.admin.contrib.mongoengine.form.CustomModelConverter`.
For example::
class MyModelConverter(AdminModelConverter):
...
...
@@ -237,7 +240,7 @@ class ModelView(BaseModelView):
only
=
self
.
form_columns
,
exclude
=
self
.
form_excluded_columns
,
field_args
=
self
.
form_args
,
converter
=
self
.
model_form_converter
())
converter
=
self
.
model_form_converter
(
self
))
return
form_class
...
...
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