- {% 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 %}