From 0a37b4665ca19f8bf9d722e51e1c9a4559e5bb3f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 19 Apr 2021 17:16:14 -0700 Subject: [PATCH] Adds control for moderator to set user group --- bookwyrm/forms.py | 5 ++++ .../user_admin/user_moderation_actions.html | 25 +++++++++++++++++++ bookwyrm/views/user_admin.py | 14 +++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 80b283109..ac5bd0273 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -149,6 +149,11 @@ class LimitedEditUserForm(CustomForm): ] help_texts = {f: None for f in fields} +class UserGroupForm(CustomForm): + class Meta: + model = models.User + fields = ["groups"] + class TagForm(CustomForm): class Meta: diff --git a/bookwyrm/templates/user_admin/user_moderation_actions.html b/bookwyrm/templates/user_admin/user_moderation_actions.html index 311cbb4b5..816e787a2 100644 --- a/bookwyrm/templates/user_admin/user_moderation_actions.html +++ b/bookwyrm/templates/user_admin/user_moderation_actions.html @@ -14,4 +14,29 @@ {% endif %} + {% if user.local %} +
+
+ {% csrf_token %} + + {% if group_form.non_field_errors %} + {{ group_form.non_field_errors }} + {% endif %} + {% with group=user.groups.first %} +
+ +
+ {% for error in group_form.groups.errors %} +

{{ error | escape }}

+ {% endfor %} + {% endwith %} + +
+
+ {% endif %} diff --git a/bookwyrm/views/user_admin.py b/bookwyrm/views/user_admin.py index 0aea74ede..3ea7016a5 100644 --- a/bookwyrm/views/user_admin.py +++ b/bookwyrm/views/user_admin.py @@ -6,7 +6,7 @@ from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View -from bookwyrm import models +from bookwyrm import forms, models from bookwyrm.settings import PAGE_LENGTH @@ -69,4 +69,14 @@ class UserAdmin(View): def get(self, request, user): """ user view """ user = get_object_or_404(models.User, id=user) - return TemplateResponse(request, "user_admin/user.html", {"user": user}) + data = {"user": user, "group_form": forms.UserGroupForm()} + return TemplateResponse(request, "user_admin/user.html", data) + + def post(self, request, user): + """ update user group """ + user = get_object_or_404(models.User, id=user) + form = forms.UserGroupForm(request.POST, instance=user) + if form.is_valid(): + form.save() + data = {"user": user, "group_form": form} + return TemplateResponse(request, "user_admin/user.html", data)