mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-29 21:11:16 +00:00
Handles changing user perms from report
This commit is contained in:
parent
040dca0c31
commit
d56b9f14a2
3 changed files with 49 additions and 8 deletions
|
@ -7,6 +7,7 @@ from django.test import TestCase
|
|||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.models.report import USER_PERMS
|
||||
from bookwyrm.management.commands import initdb
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
@ -79,3 +80,37 @@ class UserAdminViews(TestCase):
|
|||
self.assertEqual(
|
||||
list(self.local_user.groups.values_list("name", flat=True)), ["editor"]
|
||||
)
|
||||
|
||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||
@patch("bookwyrm.activitystreams.populate_stream_task.delay")
|
||||
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||
def test_user_admin_page_post_with_report(self, *_):
|
||||
"""set the user's group"""
|
||||
group = Group.objects.get(name="editor")
|
||||
self.assertEqual(
|
||||
list(self.local_user.groups.values_list("name", flat=True)), ["moderator"]
|
||||
)
|
||||
|
||||
report = models.Report.objects.create(
|
||||
user=self.local_user, reporter=self.local_user
|
||||
)
|
||||
|
||||
view = views.UserAdmin.as_view()
|
||||
request = self.factory.post("", {"groups": [group.id]})
|
||||
request.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
result = view(request, self.local_user.id, report.id)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
|
||||
self.assertEqual(
|
||||
list(self.local_user.groups.values_list("name", flat=True)), ["editor"]
|
||||
)
|
||||
# make sure a report action was created
|
||||
self.assertTrue(
|
||||
models.ReportAction.objects.filter(
|
||||
report=report, action_type=USER_PERMS
|
||||
).exists()
|
||||
)
|
||||
|
|
|
@ -141,12 +141,12 @@ urlpatterns = [
|
|||
name="settings-users",
|
||||
),
|
||||
re_path(
|
||||
r"^settings/users/(?P<user>\d+)/(?P<report_id>\d+)?$",
|
||||
r"^settings/users/(?P<user_id>\d+)/(?P<report_id>\d+)?$",
|
||||
views.UserAdmin.as_view(),
|
||||
name="settings-user",
|
||||
),
|
||||
re_path(
|
||||
r"^settings/users/(?P<user>\d+)/activate/?$",
|
||||
r"^settings/users/(?P<user_id>\d+)/activate/?$",
|
||||
views.ActivateUserAdmin.as_view(),
|
||||
name="settings-activate-user",
|
||||
),
|
||||
|
|
|
@ -7,6 +7,7 @@ from django.utils.decorators import method_decorator
|
|||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.models.report import USER_PERMS
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
|
||||
|
||||
|
@ -76,15 +77,16 @@ class UserAdminList(View):
|
|||
class UserAdmin(View):
|
||||
"""moderate an individual user"""
|
||||
|
||||
def get(self, request, user):
|
||||
# pylint: disable=unused-argument
|
||||
def get(self, request, user_id, report_id=None):
|
||||
"""user view"""
|
||||
user = get_object_or_404(models.User, id=user)
|
||||
user = get_object_or_404(models.User, id=user_id)
|
||||
data = {"user": user, "group_form": forms.UserGroupForm()}
|
||||
return TemplateResponse(request, "settings/users/user.html", data)
|
||||
|
||||
def post(self, request, user):
|
||||
def post(self, request, user_id, report_id=None):
|
||||
"""update user group"""
|
||||
user = get_object_or_404(models.User, id=user)
|
||||
user = get_object_or_404(models.User, id=user_id)
|
||||
|
||||
if request.POST.get("groups") == "":
|
||||
user.groups.set([])
|
||||
|
@ -93,6 +95,10 @@ class UserAdmin(View):
|
|||
form = forms.UserGroupForm(request.POST, instance=user)
|
||||
if form.is_valid():
|
||||
form.save(request)
|
||||
|
||||
if report_id:
|
||||
models.Report.record_action(report_id, USER_PERMS, request.user)
|
||||
|
||||
data = {"user": user, "group_form": form}
|
||||
return TemplateResponse(request, "settings/users/user.html", data)
|
||||
|
||||
|
@ -106,8 +112,8 @@ class ActivateUserAdmin(View):
|
|||
"""activate a user manually"""
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
def post(self, request, user):
|
||||
def post(self, request, user_id):
|
||||
"""activate user"""
|
||||
user = get_object_or_404(models.User, id=user)
|
||||
user = get_object_or_404(models.User, id=user_id)
|
||||
user.reactivate()
|
||||
return redirect("settings-user", user.id)
|
||||
|
|
Loading…
Reference in a new issue