@@ -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 is not None ):
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