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
765e442f
Unverified
Commit
765e442f
authored
May 16, 2018
by
Serge S. Koval
Committed by
GitHub
May 16, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1612 from jasgrider/master
Updating views.py to support changes in Peewee version 3.0 (for Field…
parents
247e19f4
704519bf
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
18 deletions
+39
-18
form.py
flask_admin/contrib/peewee/form.py
+4
-5
view.py
flask_admin/contrib/peewee/view.py
+35
-13
No files found.
flask_admin/contrib/peewee/form.py
View file @
765e442f
...
...
@@ -3,10 +3,6 @@ from wtforms import fields
from
peewee
import
(
CharField
,
DateTimeField
,
DateField
,
TimeField
,
PrimaryKeyField
,
ForeignKeyField
)
# Fix for Issue: #1602 & #1606
# Section below trys BaseModel (for versions of PeeWee < 3.0) and if that fails,
# load the new ModelBase as BaseModel (to not break things looking for BaseModel in flask-peewee and etc.)
try
:
from
peewee
import
BaseModel
except
ImportError
:
...
...
@@ -274,7 +270,10 @@ class InlineModelConverter(InlineModelConverterBase):
allow_pk
=
True
,
converter
=
converter
)
prop_name
=
reverse_field
.
related_name
try
:
prop_name
=
reverse_field
.
related_name
except
AttributeError
:
prop_name
=
reverse_field
.
backref
label
=
self
.
get_label
(
info
,
prop_name
)
...
...
flask_admin/contrib/peewee/view.py
View file @
765e442f
...
...
@@ -234,14 +234,24 @@ class ModelView(BaseModelView):
raise
Exception
(
'Failed to find field for filter:
%
s'
%
name
)
# Check if field is in different model
if
attr
.
model_class
!=
self
.
model
:
visible_name
=
'
%
s /
%
s'
%
(
self
.
get_column_name
(
attr
.
model_class
.
__name__
),
try
:
if
attr
.
model_class
!=
self
.
model
:
visible_name
=
'
%
s /
%
s'
%
(
self
.
get_column_name
(
attr
.
model_class
.
__name__
),
self
.
get_column_name
(
attr
.
name
))
else
:
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
attr
.
name
)
else
:
visible_name
=
self
.
get_column_name
(
name
)
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
attr
.
name
)
else
:
visible_name
=
self
.
get_column_name
(
name
)
except
AttributeError
:
if
attr
.
model
!=
self
.
model
:
visible_name
=
'
%
s /
%
s'
%
(
self
.
get_column_name
(
attr
.
model
.
__name__
),
self
.
get_column_name
(
attr
.
name
))
else
:
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
attr
.
name
)
else
:
visible_name
=
self
.
get_column_name
(
name
)
type_name
=
type
(
attr
)
.
__name__
flt
=
self
.
filter_converter
.
convert
(
type_name
,
...
...
@@ -307,12 +317,20 @@ class ModelView(BaseModelView):
return
create_ajax_loader
(
self
.
model
,
name
,
name
,
options
)
def
_handle_join
(
self
,
query
,
field
,
joins
):
if
field
.
model_class
!=
self
.
model
:
model_name
=
field
.
model_class
.
__name__
try
:
if
field
.
model_class
!=
self
.
model
:
model_name
=
field
.
model_class
.
__name__
if
model_name
not
in
joins
:
query
=
query
.
join
(
field
.
model_class
,
JOIN
.
LEFT_OUTER
)
joins
.
add
(
model_name
)
except
AttributeError
:
if
field
.
model
!=
self
.
model
:
model_name
=
field
.
model
.
__name__
if
model_name
not
in
joins
:
query
=
query
.
join
(
field
.
model_class
,
JOIN
.
LEFT_OUTER
)
joins
.
add
(
model_name
)
if
model_name
not
in
joins
:
query
=
query
.
join
(
field
.
model
,
JOIN
.
LEFT_OUTER
)
joins
.
add
(
model_name
)
return
query
...
...
@@ -321,8 +339,12 @@ class ModelView(BaseModelView):
field
=
getattr
(
self
.
model
,
sort_field
)
query
=
query
.
order_by
(
field
.
desc
()
if
sort_desc
else
field
.
asc
())
elif
isinstance
(
sort_field
,
Field
):
if
sort_field
.
model_class
!=
self
.
model
:
query
=
self
.
_handle_join
(
query
,
sort_field
,
joins
)
try
:
if
sort_field
.
model_class
!=
self
.
model
:
query
=
self
.
_handle_join
(
query
,
sort_field
,
joins
)
except
AttributeError
:
if
sort_field
.
model
!=
self
.
model
:
query
=
self
.
_handle_join
(
query
,
sort_field
,
joins
)
query
=
query
.
order_by
(
sort_field
.
desc
()
if
sort_desc
else
sort_field
.
asc
())
...
...
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