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
e723c57f
Commit
e723c57f
authored
Feb 09, 2017
by
Sergey Shubin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing bug with using multiple URL attributes (search, filters and page size)
parent
0795a3f6
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
6 deletions
+57
-6
base.py
flask_admin/model/base.py
+21
-6
layout.html
flask_admin/templates/bootstrap2/admin/model/layout.html
+18
-0
layout.html
flask_admin/templates/bootstrap3/admin/model/layout.html
+18
-0
No files found.
flask_admin/model/base.py
View file @
e723c57f
...
...
@@ -1688,6 +1688,24 @@ class BaseModelView(BaseView, ActionsMixin):
search
=
request
.
args
.
get
(
'search'
,
None
),
filters
=
self
.
_get_list_filter_args
())
def
_get_filters
(
self
,
filters
):
"""
Get active filters as dictionary of URL arguments and values
:param filters:
List of filters from ViewArgs object
"""
kwargs
=
{}
if
filters
:
for
i
,
pair
in
enumerate
(
filters
):
idx
,
flt_name
,
value
=
pair
key
=
'flt
%
d_
%
s'
%
(
i
,
self
.
get_filter_arg
(
idx
,
self
.
_filters
[
idx
]))
kwargs
[
key
]
=
value
return
kwargs
# URL generation helpers
def
_get_list_url
(
self
,
view_args
):
"""
...
...
@@ -1708,12 +1726,7 @@ class BaseModelView(BaseView, ActionsMixin):
if
view_args
.
page_size
:
kwargs
[
'page_size'
]
=
view_args
.
page_size
if
view_args
.
filters
:
for
i
,
pair
in
enumerate
(
view_args
.
filters
):
idx
,
flt_name
,
value
=
pair
key
=
'flt
%
d_
%
s'
%
(
i
,
self
.
get_filter_arg
(
idx
,
self
.
_filters
[
idx
]))
kwargs
[
key
]
=
value
kwargs
.
update
(
self
.
_get_filters
(
view_args
.
filters
))
return
self
.
get_url
(
'.index_view'
,
**
kwargs
)
...
...
@@ -1935,6 +1948,7 @@ class BaseModelView(BaseView, ActionsMixin):
page_size_url
=
page_size_url
,
page
=
view_args
.
page
,
page_size
=
page_size
,
default_page_size
=
self
.
page_size
,
# Sorting
sort_column
=
view_args
.
sort
,
...
...
@@ -1950,6 +1964,7 @@ class BaseModelView(BaseView, ActionsMixin):
filters
=
self
.
_filters
,
filter_groups
=
self
.
_get_filter_groups
(),
active_filters
=
view_args
.
filters
,
filter_args
=
self
.
_get_filters
(
view_args
.
filters
),
# Actions
actions
=
actions
,
...
...
flask_admin/templates/bootstrap2/admin/model/layout.html
View file @
e723c57f
...
...
@@ -34,6 +34,18 @@
{% macro filter_form() %}
<form
id=
"filter_form"
method=
"GET"
action=
"{{ return_url }}"
>
{% if sort_column is not none %}
<input
type=
"hidden"
name=
"sort"
value=
"{{ sort_column }}"
>
{% endif %}
{% if sort_desc %}
<input
type=
"hidden"
name=
"desc"
value=
"{{ sort_desc }}"
>
{% endif %}
{% if search %}
<input
type=
"hidden"
name=
"search"
value=
"{{ search }}"
>
{% endif %}
{% if page_size != default_page_size %}
<input
type=
"hidden"
name=
"page_size"
value=
"{{ page_size }}"
>
{% endif %}
<div
class=
"pull-right"
>
<button
type=
"submit"
class=
"btn btn-primary"
style=
"display: none"
>
{{ _gettext('Apply') }}
</button>
{% if active_filters %}
...
...
@@ -48,6 +60,12 @@
{% macro search_form(input_class="span2") %}
<form
method=
"GET"
action=
"{{ return_url }}"
class=
"search-form"
>
{% for flt_name, flt_value in filter_args.items() %}
<input
type=
"hidden"
name=
"{{ flt_name }}"
value=
"{{ flt_value }}"
>
{% endfor %}
{% if page_size != default_page_size %}
<input
type=
"hidden"
name=
"page_size"
value=
"{{ page_size }}"
>
{% endif %}
{% if sort_column is not none %}
<input
type=
"hidden"
name=
"sort"
value=
"{{ sort_column }}"
>
{% endif %}
...
...
flask_admin/templates/bootstrap3/admin/model/layout.html
View file @
e723c57f
...
...
@@ -34,6 +34,18 @@
{% macro filter_form() %}
<form
id=
"filter_form"
method=
"GET"
action=
"{{ return_url }}"
>
{% if sort_column is not none %}
<input
type=
"hidden"
name=
"sort"
value=
"{{ sort_column }}"
>
{% endif %}
{% if sort_desc %}
<input
type=
"hidden"
name=
"desc"
value=
"{{ sort_desc }}"
>
{% endif %}
{% if search %}
<input
type=
"hidden"
name=
"search"
value=
"{{ search }}"
>
{% endif %}
{% if page_size != default_page_size %}
<input
type=
"hidden"
name=
"page_size"
value=
"{{ page_size }}"
>
{% endif %}
<div
class=
"pull-right"
>
<button
type=
"submit"
class=
"btn btn-primary"
style=
"display: none"
>
{{ _gettext('Apply') }}
</button>
{% if active_filters %}
...
...
@@ -48,6 +60,12 @@
{% macro search_form(input_class="col-md-2") %}
<form
method=
"GET"
action=
"{{ return_url }}"
class=
"navbar-form navbar-left"
role=
"search"
>
{% for flt_name, flt_value in filter_args.items() %}
<input
type=
"hidden"
name=
"{{ flt_name }}"
value=
"{{ flt_value }}"
>
{% endfor %}
{% if page_size != default_page_size %}
<input
type=
"hidden"
name=
"page_size"
value=
"{{ page_size }}"
>
{% endif %}
{% if sort_column is not none %}
<input
type=
"hidden"
name=
"sort"
value=
"{{ sort_column }}"
>
{% endif %}
...
...
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