Refactor group detail and music views to use MemberFilterMixin for member access control

This commit is contained in:
Edgar P. Burkhart 2025-06-13 19:11:23 +02:00
parent 4e28311b1c
commit 19e6eb32c8
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
2 changed files with 21 additions and 8 deletions

View file

@ -4,13 +4,17 @@
<h1> <h1>
<i class="ri-group-2-fill"></i> {{ group.name }} <i class="ri-group-2-fill"></i> {{ group.name }}
</h1> </h1>
{% if group.owner == user %}
<p> <p>
<a href="{% url "group_update" pk=group.pk %}"><i class="ri-edit-line"></i> Modifier le groupe</a> <a href="{% url "group_update" pk=group.pk %}"><i class="ri-edit-line"></i> Modifier le groupe</a>
</p> </p>
{% endif %}
<h2>Membres</h2> <h2>Membres</h2>
{% if group.owner == user %}
<p> <p>
<a href="{% url "group_edit_members" pk=group.pk %}" role="button"><i class="ri-user-add-fill"></i> Modifier les membres</a> <a href="{% url "group_edit_members" pk=group.pk %}" role="button"><i class="ri-user-add-fill"></i> Modifier les membres</a>
</p> </p>
{% endif %}
<ul> <ul>
<li> <li>
{{ group.owner }} ({{ owner_count }}) <i class="ri-vip-crown-fill"></i> {{ group.owner }} ({{ owner_count }}) <i class="ri-vip-crown-fill"></i>

View file

@ -14,6 +14,15 @@ class OwnerFilterMixin(LoginRequiredMixin):
return super().get_queryset().filter(owner=self.request.user) return super().get_queryset().filter(owner=self.request.user)
class MemberFilterMixin(LoginRequiredMixin):
def get_queryset(self):
return (
super()
.get_queryset()
.filter(Q(members=self.request.user) | Q(owner=self.request.user))
)
class GroupMixin: class GroupMixin:
model = models.Group model = models.Group
fields = ["name"] fields = ["name"]
@ -33,7 +42,7 @@ class GroupDeleteView(OwnerFilterMixin, GroupMixin, DeleteView):
success_url = "/" success_url = "/"
class GroupDetailView(OwnerFilterMixin, GroupMixin, DetailView): class GroupDetailView(MemberFilterMixin, GroupMixin, DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs) data = super().get_context_data(**kwargs)
@ -53,7 +62,7 @@ class GroupAddMembersView(OwnerFilterMixin, GroupMixin, UpdateView):
form_class = forms.GroupAddMembersForm form_class = forms.GroupAddMembersForm
class GroupAddMusicView(OwnerFilterMixin, SingleObjectMixin, View): class GroupAddMusicView(MemberFilterMixin, SingleObjectMixin, View):
model = models.Group model = models.Group
def post(self, request, pk): def post(self, request, pk):