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
0b09c6bf
Commit
0b09c6bf
authored
Dec 26, 2016
by
PJ Janse van Rensburg
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'page_size' of
git://github.com/GrayAn/flask-admin
into prs-to-merge
parents
f30d389b
4d9f4f6a
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
65 additions
and
8 deletions
+65
-8
mod_model.rst
doc/api/mod_model.rst
+2
-1
base.py
flask_admin/model/base.py
+29
-7
layout.html
flask_admin/templates/bootstrap2/admin/model/layout.html
+11
-0
list.html
flask_admin/templates/bootstrap2/admin/model/list.html
+6
-0
layout.html
flask_admin/templates/bootstrap3/admin/model/layout.html
+11
-0
list.html
flask_admin/templates/bootstrap3/admin/model/list.html
+6
-0
No files found.
doc/api/mod_model.rst
View file @
0b09c6bf
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
form_widget_args, form_extra_fields,
form_widget_args, form_extra_fields,
form_ajax_refs, form_create_rules,
form_ajax_refs, form_create_rules,
form_edit_rules,
form_edit_rules,
page_size
page_size
, can_set_page_size
.. autoattribute:: can_create
.. autoattribute:: can_create
.. autoattribute:: can_edit
.. autoattribute:: can_edit
...
@@ -58,3 +58,4 @@
...
@@ -58,3 +58,4 @@
.. autoattribute:: action_disallowed_list
.. autoattribute:: action_disallowed_list
.. autoattribute:: page_size
.. autoattribute:: page_size
.. autoattribute:: can_set_page_size
flask_admin/model/base.py
View file @
0b09c6bf
...
@@ -42,8 +42,9 @@ class ViewArgs(object):
...
@@ -42,8 +42,9 @@ class ViewArgs(object):
"""
"""
List view arguments.
List view arguments.
"""
"""
def
__init__
(
self
,
page
=
None
,
sort
=
None
,
sort_desc
=
None
,
search
=
None
,
filters
=
None
,
extra_args
=
None
):
def
__init__
(
self
,
page
=
None
,
page_size
=
None
,
sort
=
None
,
sort_desc
=
None
,
search
=
None
,
filters
=
None
,
extra_args
=
None
):
self
.
page
=
page
self
.
page
=
page
self
.
page_size
=
page_size
self
.
sort
=
sort
self
.
sort
=
sort
self
.
sort_desc
=
bool
(
sort_desc
)
self
.
sort_desc
=
bool
(
sort_desc
)
self
.
search
=
search
self
.
search
=
search
...
@@ -61,6 +62,7 @@ class ViewArgs(object):
...
@@ -61,6 +62,7 @@ class ViewArgs(object):
flt
=
None
flt
=
None
kwargs
.
setdefault
(
'page'
,
self
.
page
)
kwargs
.
setdefault
(
'page'
,
self
.
page
)
kwargs
.
setdefault
(
'page_size'
,
self
.
page_size
)
kwargs
.
setdefault
(
'sort'
,
self
.
sort
)
kwargs
.
setdefault
(
'sort'
,
self
.
sort
)
kwargs
.
setdefault
(
'sort_desc'
,
self
.
sort_desc
)
kwargs
.
setdefault
(
'sort_desc'
,
self
.
sort_desc
)
kwargs
.
setdefault
(
'search'
,
self
.
search
)
kwargs
.
setdefault
(
'search'
,
self
.
search
)
...
@@ -719,12 +721,17 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -719,12 +721,17 @@ class BaseModelView(BaseView, ActionsMixin):
for supported types.
for supported types.
"""
"""
#
Various
settings
#
Pagination
settings
page_size
=
20
page_size
=
20
"""
"""
Default page size for pagination.
Default page size for pagination.
"""
"""
can_set_page_size
=
False
"""
Allows to select page size via dropdown list
"""
def
__init__
(
self
,
model
,
def
__init__
(
self
,
model
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
,
static_folder
=
None
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
,
static_folder
=
None
,
menu_class_name
=
None
,
menu_icon_type
=
None
,
menu_icon_value
=
None
):
menu_class_name
=
None
,
menu_icon_type
=
None
,
menu_icon_value
=
None
):
...
@@ -1646,6 +1653,7 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1646,6 +1653,7 @@ class BaseModelView(BaseView, ActionsMixin):
Return arguments from query string.
Return arguments from query string.
"""
"""
return
ViewArgs
(
page
=
request
.
args
.
get
(
'page'
,
0
,
type
=
int
),
return
ViewArgs
(
page
=
request
.
args
.
get
(
'page'
,
0
,
type
=
int
),
page_size
=
request
.
args
.
get
(
'page_size'
,
0
,
type
=
int
),
sort
=
request
.
args
.
get
(
'sort'
,
None
,
type
=
int
),
sort
=
request
.
args
.
get
(
'sort'
,
None
,
type
=
int
),
sort_desc
=
request
.
args
.
get
(
'desc'
,
None
,
type
=
int
),
sort_desc
=
request
.
args
.
get
(
'desc'
,
None
,
type
=
int
),
search
=
request
.
args
.
get
(
'search'
,
None
),
search
=
request
.
args
.
get
(
'search'
,
None
),
...
@@ -1668,6 +1676,9 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1668,6 +1676,9 @@ class BaseModelView(BaseView, ActionsMixin):
kwargs
=
dict
(
page
=
page
,
sort
=
view_args
.
sort
,
desc
=
desc
,
search
=
view_args
.
search
)
kwargs
=
dict
(
page
=
page
,
sort
=
view_args
.
sort
,
desc
=
desc
,
search
=
view_args
.
search
)
kwargs
.
update
(
view_args
.
extra_args
)
kwargs
.
update
(
view_args
.
extra_args
)
if
view_args
.
page_size
:
kwargs
[
'page_size'
]
=
view_args
.
page_size
if
view_args
.
filters
:
if
view_args
.
filters
:
for
i
,
pair
in
enumerate
(
view_args
.
filters
):
for
i
,
pair
in
enumerate
(
view_args
.
filters
):
idx
,
flt_name
,
value
=
pair
idx
,
flt_name
,
value
=
pair
...
@@ -1821,9 +1832,12 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1821,9 +1832,12 @@ class BaseModelView(BaseView, ActionsMixin):
if
sort_column
is
not
None
:
if
sort_column
is
not
None
:
sort_column
=
sort_column
[
0
]
sort_column
=
sort_column
[
0
]
# Get page size
page_size
=
view_args
.
page_size
or
self
.
page_size
# Get count and data
# Get count and data
count
,
data
=
self
.
get_list
(
view_args
.
page
,
sort_column
,
view_args
.
sort_desc
,
count
,
data
=
self
.
get_list
(
view_args
.
page
,
sort_column
,
view_args
.
sort_desc
,
view_args
.
search
,
view_args
.
filters
)
view_args
.
search
,
view_args
.
filters
,
page_size
=
page_size
)
list_forms
=
{}
list_forms
=
{}
if
self
.
column_editable_list
:
if
self
.
column_editable_list
:
...
@@ -1831,9 +1845,9 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1831,9 +1845,9 @@ class BaseModelView(BaseView, ActionsMixin):
list_forms
[
self
.
get_pk_value
(
row
)]
=
self
.
list_form
(
obj
=
row
)
list_forms
[
self
.
get_pk_value
(
row
)]
=
self
.
list_form
(
obj
=
row
)
# Calculate number of pages
# Calculate number of pages
if
count
is
not
None
and
self
.
page_size
:
if
count
is
not
None
and
page_size
:
num_pages
=
int
(
ceil
(
count
/
float
(
self
.
page_size
)))
num_pages
=
int
(
ceil
(
count
/
float
(
page_size
)))
elif
not
self
.
page_size
:
elif
not
page_size
:
num_pages
=
0
# hide pager for unlimited page_size
num_pages
=
0
# hide pager for unlimited page_size
else
:
else
:
num_pages
=
None
# use simple pager
num_pages
=
None
# use simple pager
...
@@ -1852,6 +1866,12 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1852,6 +1866,12 @@ class BaseModelView(BaseView, ActionsMixin):
return
self
.
_get_list_url
(
view_args
.
clone
(
sort
=
column
,
sort_desc
=
desc
))
return
self
.
_get_list_url
(
view_args
.
clone
(
sort
=
column
,
sort_desc
=
desc
))
def
page_size_url
(
s
):
if
not
s
:
s
=
self
.
page_size
return
self
.
_get_list_url
(
view_args
.
clone
(
page_size
=
s
))
# Actions
# Actions
actions
,
actions_confirmation
=
self
.
get_actions_list
()
actions
,
actions_confirmation
=
self
.
get_actions_list
()
...
@@ -1877,8 +1897,10 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -1877,8 +1897,10 @@ class BaseModelView(BaseView, ActionsMixin):
count
=
count
,
count
=
count
,
pager_url
=
pager_url
,
pager_url
=
pager_url
,
num_pages
=
num_pages
,
num_pages
=
num_pages
,
can_set_page_size
=
self
.
can_set_page_size
,
page_size_url
=
page_size_url
,
page
=
view_args
.
page
,
page
=
view_args
.
page
,
page_size
=
self
.
page_size
,
page_size
=
page_size
,
# Sorting
# Sorting
sort_column
=
view_args
.
sort
,
sort_column
=
view_args
.
sort
,
...
...
flask_admin/templates/bootstrap2/admin/model/layout.html
View file @
0b09c6bf
...
@@ -68,3 +68,14 @@
...
@@ -68,3 +68,14 @@
{% endif %}
{% endif %}
</form>
</form>
{% endmacro %}
{% endmacro %}
{% macro page_size_form(generator, btn_class='dropdown-toggle') %}
<a
class=
"{{ btn_class }}"
data-toggle=
"dropdown"
href=
"javascript:void(0)"
>
{{ page_size }} {{ _gettext('items') }}
<b
class=
"caret"
></b>
</a>
<ul
class=
"dropdown-menu"
>
<li><a
href=
"{{ generator(20) }}"
>
20 {{ _gettext('items') }}
</a></li>
<li><a
href=
"{{ generator(50) }}"
>
50 {{ _gettext('items') }}
</a></li>
<li><a
href=
"{{ generator(100) }}"
>
100 {{ _gettext('items') }}
</a></li>
</ul>
{% endmacro %}
flask_admin/templates/bootstrap2/admin/model/list.html
View file @
0b09c6bf
...
@@ -39,6 +39,12 @@
...
@@ -39,6 +39,12 @@
</li>
</li>
{% endif %}
{% endif %}
{% if can_set_page_size %}
<li
class=
"dropdown"
>
{{ model_layout.page_size_form(page_size_url) }}
</li>
{% endif %}
{% if actions %}
{% if actions %}
<li
class=
"dropdown"
>
<li
class=
"dropdown"
>
{{ actionlib.dropdown(actions) }}
{{ actionlib.dropdown(actions) }}
...
...
flask_admin/templates/bootstrap3/admin/model/layout.html
View file @
0b09c6bf
...
@@ -66,3 +66,14 @@
...
@@ -66,3 +66,14 @@
{% endif %}
{% endif %}
</form>
</form>
{% endmacro %}
{% endmacro %}
{% macro page_size_form(generator, btn_class='dropdown-toggle') %}
<a
class=
"{{ btn_class }}"
data-toggle=
"dropdown"
href=
"javascript:void(0)"
>
{{ page_size }} {{ _gettext('items') }}
<b
class=
"caret"
></b>
</a>
<ul
class=
"dropdown-menu"
>
<li><a
href=
"{{ generator(20) }}"
>
20 {{ _gettext('items') }}
</a></li>
<li><a
href=
"{{ generator(50) }}"
>
50 {{ _gettext('items') }}
</a></li>
<li><a
href=
"{{ generator(100) }}"
>
100 {{ _gettext('items') }}
</a></li>
</ul>
{% endmacro %}
flask_admin/templates/bootstrap3/admin/model/list.html
View file @
0b09c6bf
...
@@ -39,6 +39,12 @@
...
@@ -39,6 +39,12 @@
</li>
</li>
{% endif %}
{% endif %}
{% if can_set_page_size %}
<li
class=
"dropdown"
>
{{ model_layout.page_size_form(page_size_url) }}
</li>
{% endif %}
{% if actions %}
{% if actions %}
<li
class=
"dropdown"
>
<li
class=
"dropdown"
>
{{ actionlib.dropdown(actions) }}
{{ actionlib.dropdown(actions) }}
...
...
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