diff --git a/club/models.py b/club/models.py index f8698d6b..408090b2 100644 --- a/club/models.py +++ b/club/models.py @@ -238,6 +238,13 @@ class Club(models.Model): """Method to see if that object can be edited by the given user.""" return self.has_rights_in_club(user) + def can_roles_be_edited_by(self, user: User) -> bool: + """Return True if the given user can edit the roles of this club""" + return ( + user.has_perm("club.change_clubrole") + or self.members.ongoing().filter(user=user, role__is_presidency=True).exists() + ) + @cached_property def current_members(self) -> list[Membership]: return list( diff --git a/club/templates/club/club_members.jinja b/club/templates/club/club_members.jinja index 3e134442..684326e4 100644 --- a/club/templates/club/club_members.jinja +++ b/club/templates/club/club_members.jinja @@ -12,6 +12,15 @@

{% trans %}Club members{% endtrans %}

+ {% if club.can_roles_be_edited_by(user) %} + + {% trans %}Manage roles{% endtrans %} + + {% endif %} + {% if add_member_fragment %}
{{ add_member_fragment }} diff --git a/club/templates/club/club_tools.jinja b/club/templates/club/club_tools.jinja index 651cc9bb..a69d5c26 100644 --- a/club/templates/club/club_tools.jinja +++ b/club/templates/club/club_tools.jinja @@ -5,8 +5,19 @@

{% trans %}Communication:{% endtrans %}