mirror of https://gitlab.federez.net/re2o/re2o
5 changed files with 139 additions and 21 deletions
@ -0,0 +1,89 @@ |
|||
# -*- mode: python; coding: utf-8 -*- |
|||
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il |
|||
# se veut agnostique au réseau considéré, de manière à être installable en |
|||
# quelques clics. |
|||
# |
|||
# Copyright © 2019 Jean-Romain Garnier |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; either version 2 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License along |
|||
# with this program; if not, write to the Free Software Foundation, Inc., |
|||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|||
|
|||
from django import template |
|||
from .url_insert_param import url_insert_param |
|||
|
|||
register = template.Library() |
|||
|
|||
@register.simple_tag |
|||
def pagination_insert_page_and_id(url, page=1, id=None, **kwargs): |
|||
""" |
|||
Return the URL with some specific parameters inserted into the query |
|||
part. If a URL has already some parameters, those requested will be |
|||
modified if already exisiting or will be added and the other parameters |
|||
will stay unmodified. If parameters with the same name are already in the |
|||
URL and a value is specified for this parameter, it will replace all |
|||
existing parameters. |
|||
|
|||
**Tag name**:: |
|||
|
|||
pagination_insert_page_and_id |
|||
|
|||
**Parameters**: |
|||
|
|||
url |
|||
The URL to use as a base. The parameters will be added to this URL. |
|||
|
|||
page (optional) |
|||
The page number (greater or equal to 1) to add as a parameter. |
|||
If not specified, it will default to 1. |
|||
|
|||
id (optional) |
|||
The ID to jump to in the page. |
|||
If not specified, it will not be added. |
|||
|
|||
**Other accepted parameters*** |
|||
|
|||
page_args (optional) |
|||
The name of the parameter used to specify the page number. |
|||
It must be specifically set as a keyword. |
|||
If not specified, defaults to 1. |
|||
Example: {% pagination_insert_page_and_id https://example.com 2 page_args="page_id" %} |
|||
returns https://example.com?page_id=2 |
|||
|
|||
**Usage**:: |
|||
|
|||
{% pagination_insert_page_and_id [URL] [page number] [go to id] %} |
|||
|
|||
**Example**:: |
|||
|
|||
{% pagination_insert_page_and_id https://example.com/bar 2 settings %} |
|||
return "https://example.com/bar?page=2#settings" |
|||
|
|||
{% pagination_insert_page_and_id https://example.com/bar?foo=0 2 %} |
|||
return "https://example.com/bar?foo=0&page=2" |
|||
|
|||
{% pagination_insert_page_and_id https://example.com/bar?foo=0 2 page_arg="page_id" %} |
|||
return "https://example.com/bar?foo=0&page_id=2" |
|||
""" |
|||
|
|||
page_arg = "page" |
|||
if "page_arg" in kwargs and kwargs["page_arg"] is not None and len(kwargs["page_arg"]) > 0: |
|||
page_arg = kwargs["page_arg"] |
|||
|
|||
args = { "url": url, page_arg: page} |
|||
new_url = url_insert_param(**args) |
|||
|
|||
if id != None: |
|||
new_url += "#" + str(id) |
|||
|
|||
return new_url |
|||
Loading…
Reference in new issue