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
510d2dfb
Commit
510d2dfb
authored
Aug 27, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for MongoEngine ListField(ReferenceField) AJAX-based multi-select
parent
a797f934
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
20 additions
and
3 deletions
+20
-3
simple.py
examples/mongoengine/simple.py
+7
-1
ajax.py
flask_admin/contrib/mongoengine/ajax.py
+8
-1
form.py
flask_admin/contrib/mongoengine/form.py
+5
-1
No files found.
examples/mongoengine/simple.py
View file @
510d2dfb
...
...
@@ -76,13 +76,19 @@ class UserView(ModelView):
column_searchable_list
=
(
'name'
,
'password'
)
form_ajax_refs
=
{
'tags'
:
{
'fields'
:
(
'name'
,)
}
}
class
TodoView
(
ModelView
):
column_filters
=
[
'done'
]
form_ajax_refs
=
{
'user'
:
{
'fields'
:
(
'name'
,)
'fields'
:
[
'name'
]
}
}
...
...
flask_admin/contrib/mongoengine/ajax.py
View file @
510d2dfb
...
...
@@ -74,7 +74,14 @@ def create_ajax_loader(model, name, field_name, opts):
if
prop
is
None
:
raise
ValueError
(
'Model
%
s does not have field
%
s.'
%
(
model
,
field_name
))
# TODO: Check for field
ftype
=
type
(
prop
)
.
__name__
if
ftype
==
'ListField'
:
prop
=
prop
.
field
ftype
=
type
(
prop
)
.
__name__
if
ftype
!=
'ReferenceField'
:
raise
ValueError
(
'Dont know how to convert
%
s type for AJAX loader'
%
ftype
)
remote_model
=
prop
.
document_type
return
QueryAjaxModelLoader
(
name
,
remote_model
,
**
opts
)
...
...
flask_admin/contrib/mongoengine/form.py
View file @
510d2dfb
...
...
@@ -6,7 +6,7 @@ from flask.ext.mongoengine.wtf import orm, fields as mongo_fields
from
flask.ext.admin
import
form
from
flask.ext.admin.model.form
import
FieldPlaceholder
from
flask.ext.admin.model.fields
import
InlineFieldList
,
AjaxSelectField
from
flask.ext.admin.model.fields
import
InlineFieldList
,
AjaxSelectField
,
AjaxSelectMultipleField
from
flask.ext.admin.model.widgets
import
InlineFormWidget
from
flask.ext.admin._compat
import
iteritems
...
...
@@ -102,6 +102,10 @@ class CustomModelConverter(orm.ModelConverter):
raise
ValueError
(
'ListField "
%
s" must have field specified for model
%
s'
%
(
field
.
name
,
model
))
if
isinstance
(
field
.
field
,
ReferenceField
):
loader
=
getattr
(
self
.
view
,
'_form_ajax_refs'
,
{})
.
get
(
field
.
name
)
if
loader
:
return
AjaxSelectMultipleField
(
loader
,
**
kwargs
)
kwargs
[
'widget'
]
=
form
.
Select2Widget
(
multiple
=
True
)
# TODO: Support AJAX multi-select
...
...
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