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>
|
||||
<i class="ri-group-2-fill"></i> {{ group.name }}
|
||||
</h1>
|
||||
<p>
|
||||
<a href="{% url "group_update" pk=group.pk %}"><i class="ri-edit-line"></i> Modifier le groupe</a>
|
||||
</p>
|
||||
{% if group.owner == user %}
|
||||
<p>
|
||||
<a href="{% url "group_update" pk=group.pk %}"><i class="ri-edit-line"></i> Modifier le groupe</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
<h2>Membres</h2>
|
||||
<p>
|
||||
<a href="{% url "group_edit_members" pk=group.pk %}" role="button"><i class="ri-user-add-fill"></i> Modifier les membres</a>
|
||||
</p>
|
||||
{% if group.owner == user %}
|
||||
<p>
|
||||
<a href="{% url "group_edit_members" pk=group.pk %}" role="button"><i class="ri-user-add-fill"></i> Modifier les membres</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
<ul>
|
||||
<li>
|
||||
{{ 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)
|
||||
|
||||
|
||||
class MemberFilterMixin(LoginRequiredMixin):
|
||||
def get_queryset(self):
|
||||
return (
|
||||
super()
|
||||
.get_queryset()
|
||||
.filter(Q(members=self.request.user) | Q(owner=self.request.user))
|
||||
)
|
||||
|
||||
|
||||
class GroupMixin:
|
||||
model = models.Group
|
||||
fields = ["name"]
|
||||
|
@ -33,7 +42,7 @@ class GroupDeleteView(OwnerFilterMixin, GroupMixin, DeleteView):
|
|||
success_url = "/"
|
||||
|
||||
|
||||
class GroupDetailView(OwnerFilterMixin, GroupMixin, DetailView):
|
||||
class GroupDetailView(MemberFilterMixin, GroupMixin, DetailView):
|
||||
def get_context_data(self, **kwargs):
|
||||
data = super().get_context_data(**kwargs)
|
||||
|
||||
|
@ -53,7 +62,7 @@ class GroupAddMembersView(OwnerFilterMixin, GroupMixin, UpdateView):
|
|||
form_class = forms.GroupAddMembersForm
|
||||
|
||||
|
||||
class GroupAddMusicView(OwnerFilterMixin, SingleObjectMixin, View):
|
||||
class GroupAddMusicView(MemberFilterMixin, SingleObjectMixin, View):
|
||||
model = models.Group
|
||||
|
||||
def post(self, request, pk):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue