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
723cdfad
Commit
723cdfad
authored
Oct 14, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support form_rules in MongoEngine embedded documents.
parent
f7d78461
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
25 additions
and
6 deletions
+25
-6
form.py
flask_admin/contrib/mongoengine/form.py
+4
-4
subdoc.py
flask_admin/contrib/mongoengine/subdoc.py
+8
-0
rules.py
flask_admin/form/rules.py
+1
-1
widgets.py
flask_admin/model/widgets.py
+11
-0
inline_form.html
flask_admin/templates/admin/model/inline_form.html
+1
-1
No files found.
flask_admin/contrib/mongoengine/form.py
View file @
723cdfad
...
@@ -7,7 +7,7 @@ from flask.ext.mongoengine.wtf import orm, fields as mongo_fields
...
@@ -7,7 +7,7 @@ from flask.ext.mongoengine.wtf import orm, fields as mongo_fields
from
flask.ext.admin
import
form
from
flask.ext.admin
import
form
from
flask.ext.admin.model.form
import
FieldPlaceholder
from
flask.ext.admin.model.form
import
FieldPlaceholder
from
flask.ext.admin.model.fields
import
InlineFieldList
,
AjaxSelectField
,
AjaxSelectMultipleField
from
flask.ext.admin.model.fields
import
InlineFieldList
,
AjaxSelectField
,
AjaxSelectMultipleField
from
flask.ext.admin.model.widgets
import
InlineFormWidget
from
flask.ext.admin.model.widgets
import
InlineForm
Rule
Widget
from
flask.ext.admin._compat
import
iteritems
from
flask.ext.admin._compat
import
iteritems
from
.fields
import
ModelFormField
,
MongoFileField
,
MongoImageField
from
.fields
import
ModelFormField
,
MongoFileField
,
MongoImageField
...
@@ -135,11 +135,11 @@ class CustomModelConverter(orm.ModelConverter):
...
@@ -135,11 +135,11 @@ class CustomModelConverter(orm.ModelConverter):
# FormField does not support validators
# FormField does not support validators
kwargs
[
'validators'
]
=
[]
kwargs
[
'validators'
]
=
[]
if
'widget'
not
in
kwargs
:
kwargs
[
'widget'
]
=
InlineFormWidget
()
view
=
self
.
_get_subdocument_config
(
field
.
name
)
view
=
self
.
_get_subdocument_config
(
field
.
name
)
if
'widget'
not
in
kwargs
:
kwargs
[
'widget'
]
=
InlineFormRuleWidget
(
view
.
_form_rules
)
form_class
=
view
.
get_form
()
form_class
=
view
.
get_form
()
if
form_class
is
None
:
if
form_class
is
None
:
converter
=
self
.
clone_converter
(
view
)
converter
=
self
.
clone_converter
(
view
)
...
...
flask_admin/contrib/mongoengine/subdoc.py
View file @
723cdfad
from
flask.ext.admin._compat
import
iteritems
from
flask.ext.admin._compat
import
iteritems
from
flask.ext.admin.form
import
rules
from
flask.ext.admin.model.form
import
InlineBaseFormAdmin
from
flask.ext.admin.model.form
import
InlineBaseFormAdmin
...
@@ -8,6 +9,13 @@ class EmbeddedForm(InlineBaseFormAdmin):
...
@@ -8,6 +9,13 @@ class EmbeddedForm(InlineBaseFormAdmin):
self
.
_form_subdocuments
=
convert_subdocuments
(
getattr
(
self
,
'form_subdocuments'
,
{}))
self
.
_form_subdocuments
=
convert_subdocuments
(
getattr
(
self
,
'form_subdocuments'
,
{}))
form_rules
=
getattr
(
self
,
'form_rules'
,
None
)
if
form_rules
:
self
.
_form_rules
=
rules
.
RuleSet
(
self
,
form_rules
)
else
:
self
.
_form_rules
=
None
def
convert_subdocuments
(
values
):
def
convert_subdocuments
(
values
):
result
=
{}
result
=
{}
...
...
flask_admin/form/rules.py
View file @
723cdfad
...
@@ -239,7 +239,7 @@ class Field(Macro):
...
@@ -239,7 +239,7 @@ class Field(Macro):
field
=
getattr
(
form
,
self
.
field_name
,
None
)
field
=
getattr
(
form
,
self
.
field_name
,
None
)
if
not
field
:
if
not
field
:
raise
ValueError
(
'Form
%
s does not have field
%
s'
%
(
form
,
form_opts
,
self
.
field_name
))
raise
ValueError
(
'Form
%
s does not have field
%
s'
%
(
form
,
self
.
field_name
))
opts
=
{}
opts
=
{}
...
...
flask_admin/model/widgets.py
View file @
723cdfad
...
@@ -16,9 +16,20 @@ class InlineFormWidget(RenderTemplateWidget):
...
@@ -16,9 +16,20 @@ class InlineFormWidget(RenderTemplateWidget):
super
(
InlineFormWidget
,
self
)
.
__init__
(
'admin/model/inline_form.html'
)
super
(
InlineFormWidget
,
self
)
.
__init__
(
'admin/model/inline_form.html'
)
def
__call__
(
self
,
field
,
**
kwargs
):
def
__call__
(
self
,
field
,
**
kwargs
):
kwargs
.
setdefault
(
'form_rules'
,
None
)
return
super
(
InlineFormWidget
,
self
)
.
__call__
(
field
,
**
kwargs
)
return
super
(
InlineFormWidget
,
self
)
.
__call__
(
field
,
**
kwargs
)
class
InlineFormRuleWidget
(
InlineFormWidget
):
def
__init__
(
self
,
rule_set
):
super
(
InlineFormRuleWidget
,
self
)
.
__init__
()
self
.
rule_set
=
rule_set
def
__call__
(
self
,
field
,
**
kwargs
):
kwargs
[
'form_rules'
]
=
self
.
rule_set
return
super
(
InlineFormRuleWidget
,
self
)
.
__call__
(
field
,
**
kwargs
)
class
AjaxSelect2Widget
(
object
):
class
AjaxSelect2Widget
(
object
):
def
__init__
(
self
,
multiple
=
False
):
def
__init__
(
self
,
multiple
=
False
):
self
.
multiple
=
multiple
self
.
multiple
=
multiple
...
...
flask_admin/templates/admin/model/inline_form.html
View file @
723cdfad
{% import 'admin/lib.html' as lib with context %}
{% import 'admin/lib.html' as lib with context %}
<div
class=
"fa-inline-field"
>
<div
class=
"fa-inline-field"
>
{{ lib.render_form_fields(field) }}
{{ lib.render_form_fields(field
.form, form_rules=form_rules
) }}
</div>
</div>
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