diff --git a/apps/member/templates/member/club_alias.html b/apps/member/templates/member/club_alias.html index d80dfa0b62d605144f94b9ed90e534e55e5b104e..f4b33f42d20d49dc2346a68d550c0885fa5c2ab7 100644 --- a/apps/member/templates/member/club_alias.html +++ b/apps/member/templates/member/club_alias.html @@ -9,15 +9,18 @@ SPDX-License-Identifier: GPL-3.0-or-later <h3 class="card-header text-center"> {% trans "Note aliases" %} </h3> + <div class="card-body"> - <form class="input-group" method="POST" id="form_alias"> - {% csrf_token %} - <input type="hidden" name="note" value="{{ object.note.pk }}"> - <input type="text" name="name" class="form-control"> - <div class="input-group-append"> - <input type="submit" class="btn btn-success" value="{% trans "Add" %}"> - </div> - </form> + {% if can_create %} + <form class="input-group" method="POST" id="form_alias"> + {% csrf_token %} + <input type="hidden" name="note" value="{{ object.note.pk }}"> + <input type="text" name="name" class="form-control"> + <div class="input-group-append"> + <input type="submit" class="btn btn-success" value="{% trans "Add" %}"> + </div> + </form> + {% endif %} </div> {% render_table aliases %} </div> diff --git a/apps/member/templates/member/profile_alias.html b/apps/member/templates/member/profile_alias.html index d80dfa0b62d605144f94b9ed90e534e55e5b104e..789896277d4a4262f26349e36533b3e523fc2be6 100644 --- a/apps/member/templates/member/profile_alias.html +++ b/apps/member/templates/member/profile_alias.html @@ -10,14 +10,16 @@ SPDX-License-Identifier: GPL-3.0-or-later {% trans "Note aliases" %} </h3> <div class="card-body"> - <form class="input-group" method="POST" id="form_alias"> - {% csrf_token %} - <input type="hidden" name="note" value="{{ object.note.pk }}"> - <input type="text" name="name" class="form-control"> - <div class="input-group-append"> - <input type="submit" class="btn btn-success" value="{% trans "Add" %}"> - </div> - </form> + {% if can_create %} + <form class="input-group" method="POST" id="form_alias"> + {% csrf_token %} + <input type="hidden" name="note" value="{{ object.note.pk }}"> + <input type="text" name="name" class="form-control"> + <div class="input-group-append"> + <input type="submit" class="btn btn-success" value="{% trans "Add" %}"> + </div> + </form> + {% endif %} </div> {% render_table aliases %} </div> diff --git a/apps/member/views.py b/apps/member/views.py index c97d15a395ac108e438f198fab0affdb7265c41f..79cbed8d0c5bd6e65d037eb38586c243d72f4416 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -218,7 +218,13 @@ class ProfileAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) note = context['object'].note - context["aliases"] = AliasTable(note.alias_set.all()) + context["aliases"] = AliasTable(note.alias_set.filter(PermissionBackend + .filter_queryset(self.request.user, Alias, "view")).all()) + context["can_create"] = PermissionBackend.check_perm(self.request.user, "note.add_alias", Alias( + note=context["object"].note, + name="", + normalized_name="", + )) return context @@ -422,7 +428,13 @@ class ClubAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) note = context['object'].note - context["aliases"] = AliasTable(note.alias_set.all()) + context["aliases"] = AliasTable(note.alias_set.filter(PermissionBackend + .filter_queryset(self.request.user, Alias, "view")).all()) + context["can_create"] = PermissionBackend.check_perm(self.request.user, "note.add_alias", Alias( + note=context["object"].note, + name="", + normalized_name="", + )) return context diff --git a/apps/note/tables.py b/apps/note/tables.py index 9a23cd5d717b22db9bbad1c233f847eebd4b50d1..d27915e7d5e5bfa3ff9a694140e81ddab33bfa92 100644 --- a/apps/note/tables.py +++ b/apps/note/tables.py @@ -97,7 +97,7 @@ class HistoryTable(tables.Table): """ When the validation status is hovered, an input field is displayed to let the user specify an invalidity reason """ - has_perm = PermissionBackend\ + has_perm = PermissionBackend \ .check_perm(get_current_authenticated_user(), "note.change_transaction_invalidity_reason", record) val = "✔" if value else "✖" @@ -135,8 +135,16 @@ class AliasTable(tables.Table): delete_col = tables.TemplateColumn(template_code=DELETE_TEMPLATE, extra_context={"delete_trans": _('delete')}, - attrs={'td': {'class': 'col-sm-1'}}, - verbose_name=_("Delete"),) + attrs= + {'td': + {'class': + lambda record: 'col-sm-1' + + (' d-none' if not PermissionBackend + .check_perm(get_current_authenticated_user(), + "note.delete_alias", record) else '') + } + }, + verbose_name=_("Delete"), ) class ButtonTable(tables.Table): @@ -170,7 +178,7 @@ class ButtonTable(tables.Table): delete_col = tables.TemplateColumn(template_code=DELETE_TEMPLATE, extra_context={"delete_trans": _('delete')}, attrs={'td': {'class': 'col-sm-1'}}, - verbose_name=_("Delete"),) + verbose_name=_("Delete"), ) def render_amount(self, value): return pretty_money(value)