Skip to content
This repository was archived by the owner on Apr 17, 2021. It is now read-only.

Commit 46c5704

Browse files
committed
feat: add url_anchor parameter
1 parent 9754a6f commit 46c5704

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

bootstrap_pagination/templatetags/bootstrap_pagination.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def strToBool(val):
1717
return val.lower() == "true"
1818

1919

20-
def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params):
20+
def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor):
2121
"""
2222
Helper function to return a valid URL string given the template tag parameters
2323
"""
@@ -44,6 +44,9 @@ def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra
4444
if (len(url_get_params) > 0):
4545
url += '?' + url_get_params.urlencode()
4646

47+
if (url_anchor):
48+
url += '#' + url_anchor
49+
4750
return url
4851

4952

@@ -78,14 +81,15 @@ def render(self, context):
7881
url_extra_args = kwargs.get("url_extra_args", [])
7982
url_extra_kwargs = kwargs.get("url_extra_kwargs", {})
8083
url_get_params = kwargs.get("url_get_params", context['request'].GET)
84+
url_anchor = kwargs.get("url_anchor", None)
8185

8286
previous_page_url = None
8387
if page.has_previous():
84-
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
88+
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
8589

8690
next_page_url = None
8791
if page.has_next():
88-
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
92+
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
8993

9094
return get_template("bootstrap_pagination/pager.html").render(
9195
Context({
@@ -146,6 +150,7 @@ def render(self, context):
146150
url_extra_args = kwargs.get("url_extra_args", [])
147151
url_extra_kwargs = kwargs.get("url_extra_kwargs", {})
148152
url_get_params = kwargs.get("url_get_params", context['request'].GET)
153+
url_anchor = kwargs.get("url_anchor", None)
149154

150155
# Generage our viewable page range
151156
page_count = page.paginator.num_pages
@@ -176,24 +181,24 @@ def render(self, context):
176181
# Generate our URLs (page range + special urls for first, previous, next, and last)
177182
page_urls = []
178183
for curpage in page_range:
179-
url = get_page_url(curpage, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
184+
url = get_page_url(curpage, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
180185
page_urls.append((curpage, url))
181186

182187
first_page_url = None
183188
if current_page >= 1:
184-
first_page_url = get_page_url(1, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
189+
first_page_url = get_page_url(1, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
185190

186191
last_page_url = None
187192
if current_page <= page_count:
188-
last_page_url = get_page_url(page_count, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
193+
last_page_url = get_page_url(page_count, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
189194

190195
previous_page_url = None
191196
if page.has_previous():
192-
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
197+
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
193198

194199
next_page_url = None
195200
if page.has_next():
196-
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
201+
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
197202

198203
return get_template("bootstrap_pagination/pagination.html").render(
199204
Context({
@@ -278,7 +283,7 @@ def bootstrap_paginate(parser, token):
278283
number will be overwritten. Use this to preserve
279284
filters.
280285
281-
286+
url_anchor - The anchor to use in URLs. Defaults to None.
282287
"""
283288
bits = token.split_contents()
284289
if len(bits) < 2:
@@ -345,6 +350,8 @@ def bootstrap_pager(parser, token):
345350
url_get_params - The other get parameters to pass, only the page
346351
number will be overwritten. Use this to preserve
347352
filters.
353+
354+
url_anchor - The anchor to use in URLs. Defaults to None.
348355
"""
349356
bits = token.split_contents()
350357
if len(bits) < 2:

0 commit comments

Comments
 (0)