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
387b5f84
Commit
387b5f84
authored
Dec 26, 2016
by
PJ Janse van Rensburg
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'sqla-ajax-loader-filter' of
git://github.com/dzhou/flask-admin
into prs-to-merge
parents
3ddaaeaf
ac38f670
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
1 deletion
+8
-1
ajax.py
flask_admin/contrib/sqla/ajax.py
+8
-1
No files found.
flask_admin/contrib/sqla/ajax.py
View file @
387b5f84
from
sqlalchemy
import
or_
from
sqlalchemy
import
or_
,
and_
from
flask_admin._compat
import
as_unicode
,
string_types
from
flask_admin.model.ajax
import
AjaxModelLoader
,
DEFAULT_PAGE_SIZE
...
...
@@ -13,6 +13,8 @@ class QueryAjaxModelLoader(AjaxModelLoader):
:param fields:
Fields to run query against
:param filters:
Additional filters to apply to the loader
"""
super
(
QueryAjaxModelLoader
,
self
)
.
__init__
(
name
,
options
)
...
...
@@ -20,6 +22,7 @@ class QueryAjaxModelLoader(AjaxModelLoader):
self
.
model
=
model
self
.
fields
=
options
.
get
(
'fields'
)
self
.
order_by
=
options
.
get
(
'order_by'
)
self
.
filters
=
options
.
get
(
'filters'
)
if
not
self
.
fields
:
raise
ValueError
(
'AJAX loading requires `fields` to be specified for
%
s.
%
s'
%
(
model
,
self
.
name
))
...
...
@@ -65,6 +68,10 @@ class QueryAjaxModelLoader(AjaxModelLoader):
filters
=
(
field
.
ilike
(
u'
%%%
s
%%
'
%
term
)
for
field
in
self
.
_cached_fields
)
query
=
query
.
filter
(
or_
(
*
filters
))
if
self
.
filters
:
filters
=
[
"
%
s.
%
s"
%
(
self
.
model
.
__name__
.
lower
(),
value
)
for
value
in
self
.
filters
]
query
=
query
.
filter
(
and_
(
*
filters
))
if
self
.
order_by
:
query
=
query
.
order_by
(
self
.
order_by
)
...
...
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