Add member management functionality in group views and templates
This commit is contained in:
parent
f211b9af50
commit
6ada3290c8
5 changed files with 86 additions and 9 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue