From 20f1e08b935abe1605a63a0a410c09cf18534352 Mon Sep 17 00:00:00 2001 From: imperosol Date: Fri, 6 Nov 2026 17:58:50 +0100 Subject: [PATCH] reorder user tools --- core/templates/core/user_tools.jinja | 59 ++++++++----------- core/tests/test_core.py | 23 ++++++-- .../templates/election/election_list.jinja | 21 ++----- 3 files changed, 49 insertions(+), 54 deletions(-) diff --git a/core/templates/core/user_tools.jinja b/core/templates/core/user_tools.jinja index cbc98731..e9a47032 100644 --- a/core/templates/core/user_tools.jinja +++ b/core/templates/core/user_tools.jinja @@ -13,7 +13,7 @@

{% trans %}User Tools{% endtrans %}

- {% if user.has_perm("subscription.view_userban") or user.is_root or user.is_board_member %} + {% if user.has_perm("subscription.view_userban") or user.has_perm("club.add_club") or user.is_root or user.is_board_member %}

{% trans %}Sith management{% endtrans %}

@@ -41,8 +41,7 @@ {% for b in settings.SITH_COUNTER_BARS if user.is_in_group(name=b[1] + " admin") %} {% set is_admin_on_a_counter = true %} {% endfor %} - - {% if is_admin_on_a_counter or user.is_root or user.is_in_group(pk=settings.SITH_GROUP_COUNTER_ADMIN_ID) %} + {% if is_admin_on_a_counter or user.has_perm("counter.view_product") or user.has_perm("counter.view_eticket") %}

{% trans %}Counters{% endtrans %}

{% endif %} - {% if user.is_root or user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %} + {% if user.has_perms(["counter.view_invoicecall", "counter.change_invoicecall"]) or user.is_root or user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %}

{% trans %}Accounting{% endtrans %}

{% endif %} - {% if user.is_root or user.is_com_admin or user.is_in_group(pk=settings.SITH_GROUP_SAS_ADMIN_ID) %} + {% if user.is_root or user.is_com_admin or user.has_perm("sas.moderate_sasfile") %}

{% trans %}Communication{% endtrans %}

@@ -170,12 +158,17 @@
{% endif %} - {% if user.memberships.filter(end_date=None).all().count() > 0 %} + {% set memberships = user.memberships.ongoing().select_related("club")|list %} + {% if memberships|length > 0 %}

{% trans %}Club tools{% endtrans %}

    - {% for m in user.memberships.filter(end_date=None).all() %} -
  • {{ m.club }}
  • + {% for m in memberships %} + {% if m.is_board %} +
  • {{ m.club }}
  • + {% else %} +
  • {{ m.club }}
  • + {% endif %} {% endfor %}
@@ -208,7 +201,7 @@ diff --git a/core/tests/test_core.py b/core/tests/test_core.py index 8395e8a6..fb5114bc 100644 --- a/core/tests/test_core.py +++ b/core/tests/test_core.py @@ -35,7 +35,7 @@ from pytest_django.asserts import assertInHTML, assertRedirects from antispam.models import ToxicDomain from club.models import Club -from core.baker_recipes import subscriber_user +from core.baker_recipes import board_user, subscriber_user from core.models import AnonymousUser, Group, Page, User, validate_promo from core.utils import get_last_promo, get_semester_code, get_start_of_semester from core.views import AllowFragment @@ -398,11 +398,24 @@ class TestUserTools: response, expected_url=reverse("core:login", query={"next": url}) ) - @pytest.mark.parametrize("username", ["guy", "root", "skia", "comunity"]) - def test_page_is_working(self, client, username): + @pytest.mark.parametrize( + "user_factory", + [ + lambda: baker.make(User), + lambda: baker.make(User, is_superuser=True), + board_user.make, + lambda: baker.make( + User, groups=[Group.objects.get(id=settings.SITH_GROUP_COM_ADMIN_ID)] + ), + lambda: baker.make( + User, + groups=[Group.objects.get(id=settings.SITH_GROUP_COUNTER_ADMIN_ID)], + ), + ], + ) + def test_page_is_working(self, client, user_factory): """All existing users should be able to see the test page.""" - # Test for simple user - client.force_login(User.objects.get(username=username)) + client.force_login(user_factory()) response = client.get(reverse("core:user_tools")) assert response.status_code == 200 diff --git a/election/templates/election/election_list.jinja b/election/templates/election/election_list.jinja index a8e277df..171650d8 100644 --- a/election/templates/election/election_list.jinja +++ b/election/templates/election/election_list.jinja @@ -5,24 +5,13 @@ {%- trans %}Election list{% endtrans %} {%- endblock %} -{% block head %} - {{ super() -}} - -{%- endblock %} - {% block content %}

{% trans %}Current elections{% endtrans %}

- - {% trans %}New election{% endtrans %} - + {% if user.has_perm("election.add_election") %} + + {% trans %}New election{% endtrans %} + + {% endif %} {%- for election in object_list %}