diff --git a/base/static/css/main.css b/base/static/css/main.css
index e7247c2..a353d2e 100644
--- a/base/static/css/main.css
+++ b/base/static/css/main.css
@@ -12,7 +12,7 @@ form a[role="button"] {
width: 100%;
}
-i.ri-vip-crown-fill {
+i.owner {
color: var(--pico-color-amber-200);
}
diff --git a/game/templates/game/group_detail.html b/game/templates/game/group_detail.html
index 70cdfd5..d305efa 100644
--- a/game/templates/game/group_detail.html
+++ b/game/templates/game/group_detail.html
@@ -48,12 +48,55 @@
Modifier les membres
{% endif %}
-
- -
- {{ group.owner }} ({{ owner_count }})
-
- {% for member in members.all %}- {{ member }} ({{ member.count }})
{% endfor %}
-
+
+
+
+ Membre |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+ {{ group.owner }} |
+
+
+ |
+ {{ owner_count }} |
+ |
+
+ {% for member in members.all %}
+
+ {{ member }} |
+ |
+ {{ member.count }} |
+
+
+
+
+ |
+
+ {% endfor %}
+
+
+
Mes musiques ({{ musics.count }})
diff --git a/game/templates/game/home.html b/game/templates/game/home.html
index 74352e1..b726da8 100644
--- a/game/templates/game/home.html
+++ b/game/templates/game/home.html
@@ -10,7 +10,7 @@
{% for group in user.owned_group_set.all %}
-
- {{ group.name }}
+ {{ group.name }}
{% endfor %}
{% for group in user.group_set.all %}
diff --git a/game/urls.py b/game/urls.py
index 8b8f9d3..d55639b 100644
--- a/game/urls.py
+++ b/game/urls.py
@@ -21,6 +21,11 @@ urlpatterns = [
views.GroupAddMusicView.as_view(),
name="group_add_music",
),
+ path(
+ "group//add_member/",
+ views.GroupAddMemberView.as_view(),
+ name="group_add_member",
+ ),
path(
"group/remove_music//",
views.GroupRemoveMusicView.as_view(),
@@ -31,6 +36,11 @@ urlpatterns = [
views.GroupRemoveGameView.as_view(),
name="group_remove_game",
),
+ path(
+ "group//remove_membrer//",
+ views.GroupRemoveMemberView.as_view(),
+ name="group_remove_member",
+ ),
path(
"group//start_game/", views.GameCreateView.as_view(), name="start_game"
),
diff --git a/game/views.py b/game/views.py
index 5cf1c33..7713d26 100644
--- a/game/views.py
+++ b/game/views.py
@@ -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