diff --git a/club/models.py b/club/models.py index 7fe48077..317d625a 100644 --- a/club/models.py +++ b/club/models.py @@ -204,6 +204,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 18c14e84..b4598099 100644 --- a/club/templates/club/club_members.jinja +++ b/club/templates/club/club_members.jinja @@ -16,6 +16,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 %}