Refactor group detail and music views to use MemberFilterMixin for member access control
This commit is contained in:
parent
4e28311b1c
commit
19e6eb32c8
2 changed files with 21 additions and 8 deletions
|
@ -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>
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue