Add member management functionality in group views and templates

This commit is contained in:
Edgar P. Burkhart 2025-06-13 23:51:10 +02:00
parent f211b9af50
commit 6ada3290c8
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
5 changed files with 86 additions and 9 deletions

View file

@ -5,9 +5,10 @@ import google_auth_oauthlib
import googleapiclient.discovery
from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.db.models import Count, Q
from django.http import JsonResponse
from django.shortcuts import redirect
from django.shortcuts import get_object_or_404, redirect
from django.views import View
from django.views.generic.detail import DetailView, SingleObjectMixin
from django.views.generic.edit import CreateView, DeleteView, UpdateView
@ -26,6 +27,7 @@ class MemberFilterMixin(LoginRequiredMixin):
super()
.get_queryset()
.filter(Q(members=self.request.user) | Q(owner=self.request.user))
.distinct()
)
@ -91,6 +93,18 @@ class GroupAddMusicView(MemberFilterMixin, SingleObjectMixin, View):
return redirect(group)
class GroupAddMemberView(OwnerFilterMixin, SingleObjectMixin, View):
model = models.Group
def post(self, request, pk):
group = self.get_object()
username = request.POST.get("username")
user = User.objects.get(username=username)
group.members.add(user)
return redirect(group)
class GroupRemoveMusicView(OwnerFilterMixin, SingleObjectMixin, View):
model = models.MusicVideo
@ -101,6 +115,16 @@ class GroupRemoveMusicView(OwnerFilterMixin, SingleObjectMixin, View):
return redirect(group)
class GroupRemoveMemberView(View):
def get(self, request, pk, user_pk):
relation = get_object_or_404(
models.Group.members.through, group_id=pk, user_id=user_pk
)
group = relation.group
relation.delete()
return redirect(group)
class GroupRemoveGameView(SingleObjectMixin, View):
model = models.MusikGame