Skip to content

Commit bb96eb9

Browse files
Fixes #195 add chronological sorting to home page, user/org profile page (#261)
* Fixes #195 add chronogical sort to home page, user/org profile page
1 parent 73bab5a commit bb96eb9

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

pytition/petition/templates/petition/generic_petition_list.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,19 @@ <h4 class="card-title">
6262
<div>
6363
<ul class="pagination justify-content-center">
6464
{% if petitions.has_previous %}
65-
<li class="page-item"><a class="page-link" href="?page={{ petitions.previous_page_number }}">&laquo;</a></li>
65+
<li class="page-item"><a class="page-link" href="?page={{ petitions.previous_page_number }}&sort={{ sort }}">&laquo;</a></li>
6666
{% else %}
6767
<li class="page-item disabled"><span class="page-link">&laquo;</span></li>
6868
{% endif %}
6969
{% for i in petitions.paginator.page_range %}
7070
{% if petitions.number == i %}
7171
<li class="page-item active"><span class="page-link">{{ i }} <span class="sr-only">(current)</span></span></li>
7272
{% else %}
73-
<li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li>
73+
<li class="page-item"><a class="page-link" href="?page={{ i }}&sort={{ sort }}">{{ i }}</a></li>
7474
{% endif %}
7575
{% endfor %}
7676
{% if petitions.has_next %}
77-
<li class="page-item"><a class="page-link" href="?page={{ petitions.next_page_number }}">&raquo;</a></li>
77+
<li class="page-item"><a class="page-link" href="?page={{ petitions.next_page_number }}&sort={{ sort }}">&raquo;</a></li>
7878
{% else %}
7979
<li class="page-item disabled"><span class="page-link">&raquo;</span></li>
8080
{% endif %}

pytition/petition/templates/petition/index.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,18 @@ <h1 class="jumbotron-heading">{% trans "Welcome to Pytition"%}</h1>
1818
{% endif %}
1919
</div>
2020
</section>
21-
<section class="petition-list bg-light">
21+
<section id="petition-list-id" class="petition-list bg-light">
2222
<div class="text-center container">
2323
<h2>{% trans "View latest petitions" %}</h2>
24-
{% include 'petition/generic_petition_list.html' with petitions=petitions %}
24+
<div class="d-flex justify-content-end">
25+
<div class="btn-group" role="group" aria-label="sort-buttons">
26+
<a class="btn {% if sort == 'desc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
27+
href="{% url "index" %}?sort=desc#petition-list-id" role="button">{% trans "Last Created" %}</a>
28+
<a class="btn {% if sort == 'asc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
29+
href="{% url "index" %}?sort=asc#petition-list-id" role="button">{% trans "First Created" %}</a>
30+
</div>
31+
</div>
32+
{% include 'petition/generic_petition_list.html' with petitions=petitions sort=sort %}
2533
</div>
2634
</section>
2735

pytition/petition/templates/petition/org_profile.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
<div class="row">
1919
<h2>{{ org.name }} </h2>
2020
</div>
21-
{% include 'petition/generic_petition_list.html' with petitions=petitions %}
21+
<div class="d-flex justify-content-end">
22+
<div class="btn-group" role="group" aria-label="sort-buttons">
23+
<a class="btn {% if sort == 'desc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
24+
href="{% url "org_profile" org.slugname %}?sort=desc" role="button">{% trans "Last Created" %}</a>
25+
<a class="btn {% if sort == 'asc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
26+
href="{% url "org_profile" org.slugname %}?sort=asc" role="button">{% trans "First Created" %}</a>
27+
</div>
28+
</div>
29+
{% include 'petition/generic_petition_list.html' with petitions=petitions sort=sort %}
2230
</div>
2331
{% endblock main_content %}

pytition/petition/templates/petition/user_profile.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,17 @@
1818
<div class="row">
1919
<h2>{{user.name }} </h2>
2020
</div>
21+
<div class="d-flex justify-content-end">
22+
<div class="btn-group" role="group" aria-label="sort-buttons">
23+
<a class="btn {% if sort == 'desc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
24+
href="{% url "user_profile" user.username %}?sort=desc" role="button">{% trans "Last Created" %}</a>
25+
<a class="btn {% if sort == 'asc' %} btn-secondary {% else %} btn-outline-secondary {% endif %}"
26+
href="{% url "user_profile" user.username %}?sort=asc" role="button">{% trans "First Created" %}</a>
27+
</div>
28+
</div>
2129
{% blocktrans asvar no_petitions_text %}
2230
This user has not created any petition yet
2331
{% endblocktrans %}
24-
{% include 'petition/generic_petition_list.html' with petitions=petitions no_petitions_text=no_petitions_text %}
32+
{% include 'petition/generic_petition_list.html' with petitions=petitions no_petitions_text=no_petitions_text sort=sort %}
2533
</div>
2634
{% endblock main_content %}

pytition/petition/views.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,18 @@ def index(request):
7575
user = get_session_user(request)
7676
else:
7777
user = request.user
78-
all_petitions = Petition.objects.filter(published=True).order_by('-id')
78+
sort = request.GET.get('sort', 'desc')
79+
creation_date = '-creation_date' if sort == 'desc' else 'creation_date'
80+
all_petitions = Petition.objects.filter(published=True).order_by(creation_date)
7981
paginator = Paginator(all_petitions, settings.PAGINATOR_COUNT)
8082
page = request.GET.get('page')
8183
petitions = paginator.get_page(page)
8284

8385
return render(request, 'petition/index.html',
8486
{
8587
'user': user,
86-
'petitions': petitions
88+
'petitions': petitions,
89+
'sort': sort
8790
}
8891
)
8992

@@ -336,16 +339,17 @@ def user_profile(request, user_name):
336339
user = PytitionUser.objects.get(user__username=user_name)
337340
except PytitionUser.DoesNotExist:
338341
raise Http404(_("not found"))
339-
340-
petitions = user.petition_set.filter(published=True).order_by('-id')
342+
sort = request.GET.get('sort', 'desc')
343+
creation_date = '-creation_date' if sort == 'desc' else 'creation_date'
344+
petitions = user.petition_set.filter(published=True).order_by(creation_date)
341345
paginator = Paginator(petitions, settings.PAGINATOR_COUNT)
342346
page = request.GET.get('page')
343347
petitions = paginator.get_page(page)
344348

345349
return render(
346350
request,
347351
'petition/user_profile.html',
348-
{'user': user, 'petitions': petitions}
352+
{'user': user, 'petitions': petitions, 'sort': sort }
349353
)
350354

351355

@@ -386,13 +390,16 @@ def org_profile(request, orgslugname):
386390
except Organization.DoesNotExist:
387391
raise Http404(_("not found"))
388392

389-
petitions = org.petition_set.filter(published=True).order_by('-id')
393+
sort = request.GET.get('sort', 'desc')
394+
creation_date = '-creation_date' if sort == 'desc' else 'creation_date'
395+
petitions = org.petition_set.filter(published=True).order_by(creation_date)
390396
paginator = Paginator(petitions, settings.PAGINATOR_COUNT)
391397
page = request.GET.get('page')
392398
petitions = paginator.get_page(page)
393399

394400
ctx = {'org': org,
395-
'petitions': petitions}
401+
'petitions': petitions,
402+
'sort': sort}
396403

397404
# if a user is logged-in, put it in the context, it will feed the navbar dropdown
398405
if user is not None:

0 commit comments

Comments
 (0)