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
cc434b30
Commit
cc434b30
authored
Mar 14, 2015
by
Pete Richards
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove not-visible fields from forms
parent
8db79a06
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
0 deletions
+50
-0
rules.py
flask_admin/form/rules.py
+42
-0
base.py
flask_admin/model/base.py
+8
-0
No files found.
flask_admin/form/rules.py
View file @
cc434b30
...
...
@@ -25,6 +25,13 @@ class BaseRule(object):
self
.
rule_set
=
rule_set
return
self
@
property
def
visible_fields
(
self
):
"""
A list of visible fields for the given rule.
"""
raise
NotImplementedError
()
def
__call__
(
self
,
form
,
form_opts
=
None
,
field_args
=
{}):
"""
Render rule.
...
...
@@ -68,6 +75,17 @@ class NestedRule(BaseRule):
self
.
rules
=
rule_set
.
configure_rules
(
self
.
rules
,
self
)
return
super
(
NestedRule
,
self
)
.
configure
(
rule_set
,
parent
)
@
property
def
visible_fields
(
self
):
"""
Return visible fields for all child rules.
"""
visible_fields
=
[]
for
rule
in
self
.
rules
:
for
field
in
rule
.
visible_fields
:
visible_fields
.
append
(
field
)
return
visible_fields
def
__iter__
(
self
):
"""
Return rules.
...
...
@@ -111,6 +129,10 @@ class Text(BaseRule):
self
.
text
=
text
self
.
escape
=
escape
@
property
def
visible_fields
(
self
):
return
[]
def
__call__
(
self
,
form
,
form_opts
=
None
,
field_args
=
{}):
if
self
.
escape
:
return
self
.
text
...
...
@@ -168,6 +190,10 @@ class Macro(BaseRule):
return
field
@
property
def
visible_fields
(
self
):
return
[]
def
__call__
(
self
,
form
,
form_opts
=
None
,
field_args
=
{}):
"""
Render macro rule.
...
...
@@ -220,6 +246,10 @@ class Container(Macro):
self
.
child_rule
.
configure
(
rule_set
,
self
)
return
super
(
Container
,
self
)
.
configure
(
rule_set
,
parent
)
@
property
def
visible_fields
(
self
):
return
self
.
child_rule
.
visible_fields
def
__call__
(
self
,
form
,
form_opts
=
None
,
field_args
=
{}):
"""
Render container.
...
...
@@ -258,6 +288,10 @@ class Field(Macro):
super
(
Field
,
self
)
.
__init__
(
render_field
)
self
.
field_name
=
field_name
@
property
def
visible_fields
(
self
):
return
[
self
.
field_name
]
def
__call__
(
self
,
form
,
form_opts
=
None
,
field_args
=
{}):
"""
Render field.
...
...
@@ -345,6 +379,14 @@ class RuleSet(object):
self
.
view
=
view
self
.
rules
=
self
.
configure_rules
(
rules
)
@
property
def
visible_fields
(
self
):
visible_fields
=
[]
for
rule
in
self
.
rules
:
for
field
in
rule
.
visible_fields
:
visible_fields
.
append
(
field
)
return
visible_fields
def
convert_string
(
self
,
value
):
"""
Convert string to rule.
...
...
flask_admin/model/base.py
View file @
cc434b30
...
...
@@ -1477,6 +1477,10 @@ class BaseModelView(BaseView, ActionsMixin):
return
redirect
(
return_url
)
form
=
self
.
create_form
()
if
self
.
_form_create_rules
:
for
field
in
form
:
if
field
.
name
not
in
self
.
_form_create_rules
.
visible_fields
:
form
.
__delitem__
(
field
.
name
)
if
self
.
validate_form
(
form
):
if
self
.
create_model
(
form
):
...
...
@@ -1514,6 +1518,10 @@ class BaseModelView(BaseView, ActionsMixin):
return
redirect
(
return_url
)
form
=
self
.
edit_form
(
obj
=
model
)
if
self
.
_form_edit_rules
:
for
field
in
form
:
if
field
.
name
not
in
self
.
_form_edit_rules
.
visible_fields
:
form
.
__delitem__
(
field
.
name
)
if
self
.
validate_form
(
form
):
if
self
.
update_model
(
form
,
model
):
...
...
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