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
911be801
Commit
911be801
authored
May 09, 2014
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed #530. Do not fail with self-referential inline models
parent
0f4d0e4f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
2 deletions
+27
-2
form.py
flask_admin/contrib/sqla/form.py
+7
-2
test_inlineform.py
flask_admin/tests/sqlamodel/test_inlineform.py
+20
-0
No files found.
flask_admin/contrib/sqla/form.py
View file @
911be801
...
@@ -550,7 +550,7 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -550,7 +550,7 @@ class InlineModelConverter(InlineModelConverterBase):
reverse_prop
=
None
reverse_prop
=
None
for
prop
in
target_mapper
.
iterate_properties
:
for
prop
in
target_mapper
.
iterate_properties
:
if
hasattr
(
prop
,
'direction'
):
if
hasattr
(
prop
,
'direction'
)
and
prop
.
direction
.
name
in
(
'MANYTOONE'
,
'MANYTOMANY'
)
:
if
issubclass
(
model
,
prop
.
mapper
.
class_
):
if
issubclass
(
model
,
prop
.
mapper
.
class_
):
reverse_prop
=
prop
reverse_prop
=
prop
break
break
...
@@ -560,8 +560,13 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -560,8 +560,13 @@ class InlineModelConverter(InlineModelConverterBase):
# Find forward property
# Find forward property
forward_prop
=
None
forward_prop
=
None
if
prop
.
direction
.
name
==
'MANYTOONE'
:
candidate
=
'ONETOMANY'
else
:
candidate
=
'MANYTOONE'
for
prop
in
mapper
.
iterate_properties
:
for
prop
in
mapper
.
iterate_properties
:
if
hasattr
(
prop
,
'direction'
):
if
hasattr
(
prop
,
'direction'
)
and
prop
.
direction
.
name
==
candidate
:
if
prop
.
mapper
.
class_
==
target_mapper
.
class_
:
if
prop
.
mapper
.
class_
==
target_mapper
.
class_
:
forward_prop
=
prop
forward_prop
=
prop
break
break
...
...
flask_admin/tests/sqlamodel/test_inlineform.py
View file @
911be801
...
@@ -149,3 +149,23 @@ def test_inline_form_ajax_fk():
...
@@ -149,3 +149,23 @@ def test_inline_form_ajax_fk():
eq_
(
loader
.
model
,
Tag
)
eq_
(
loader
.
model
,
Tag
)
ok_
(
'userinfo-tag'
in
view
.
_form_ajax_refs
)
ok_
(
'userinfo-tag'
in
view
.
_form_ajax_refs
)
def
test_inline_form_self
():
app
,
db
,
admin
=
setup
()
class
Tree
(
db
.
Model
):
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
parent_id
=
db
.
Column
(
db
.
Integer
,
db
.
ForeignKey
(
'tree.id'
))
parent
=
db
.
relationship
(
'Tree'
,
remote_side
=
[
id
],
backref
=
'children'
)
db
.
create_all
()
class
TreeView
(
ModelView
):
inline_models
=
(
Tree
,)
view
=
TreeView
(
Tree
,
db
.
session
)
parent
=
Tree
()
child
=
Tree
(
parent
=
parent
)
form
=
view
.
edit_form
(
child
)
eq_
(
form
.
parent
.
data
,
parent
)
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