Skip to content
This repository was archived by the owner on Oct 28, 2022. It is now read-only.

Commit b7ee491

Browse files
authored
Merge pull request #171 from walison17/fix-pagination-links
Fix pagination links
2 parents 166a973 + 97b917d commit b7ee491

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed

pyjobs/core/templates/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{% load static %}
33
{% load humanize %}
44
{% load widget_tweaks %}
5+
{% load core_tags %}
56
{%block title%} {{WEBSITE_NAME}} - A Central de Jobs {{WEBSITE_WORKING_LANGUAGE}}
67
{%endblock%}
78
{%block main%}
@@ -132,7 +133,7 @@ <h6 class="text-muted card-subtitle mb-2">Postada: {{job.created_at|naturalday}}
132133
<ul class="pagination">
133134
{% for page in pages %}
134135
<li class="page-item">
135-
<a class="page-link" href="{% url 'index' %}?page={{page}}{% if 'search' in request.GET %}&search={{ request.GET.search }}{% endif %}">{{ page }}</a>
136+
<a class="page-link" href="{% url 'index' %}?{% merge_query_params page=page %}">{{ page }}</a>
136137
</li>
137138
{% endfor %}
138139
</ul>

pyjobs/core/templatetags/__init__.py

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from django import template
2+
3+
register = template.Library()
4+
5+
6+
@register.simple_tag(takes_context=True)
7+
def merge_query_params(context, **kwargs):
8+
query_params = context["request"].GET.copy()
9+
10+
for k, v in kwargs.items():
11+
query_params[k] = v
12+
13+
return query_params.urlencode()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from django.test import SimpleTestCase, RequestFactory
2+
from django.template import Context, Template
3+
4+
5+
class TestMergeQueryParamsTag(SimpleTestCase):
6+
def setUp(self):
7+
self.rf = RequestFactory()
8+
9+
def test_add_param(self):
10+
request = self.rf.get("/", {"description": "descricao", "salary_range": 1})
11+
context = Context({"request": request})
12+
template = Template(
13+
"{% load core_tags %}"
14+
'<a class="page-link" href="/?{% merge_query_params page=1 %}">1</a>'
15+
)
16+
rendered_template = template.render(context)
17+
18+
self.assertInHTML(
19+
'<a class="page-link" href="/?description=descricao&salary_range=1&page=1">1</a>',
20+
rendered_template,
21+
)
22+
23+
def test_replace_param(self):
24+
request = self.rf.get(
25+
"/", {"description": "descricao", "salary_range": 1, "page": 2}
26+
)
27+
context = Context({"request": request})
28+
template = Template(
29+
"{% load core_tags %}"
30+
'<a class="page-link" href="/?{% merge_query_params page=10 %}">1</a>'
31+
)
32+
rendered_template = template.render(context)
33+
34+
self.assertInHTML(
35+
'<a class="page-link" href="/?description=descricao&salary_range=1&page=10">1</a>',
36+
rendered_template,
37+
)

0 commit comments

Comments
 (0)