Browse Source

Add extra pytest test cases for user admin

rafalp 6 years ago
parent
commit
5bb5fec68a

+ 27 - 0
misago/conftest.py

@@ -80,6 +80,17 @@ def staffuser_acl(staffuser, cache_versions):
 
 
 
 
 @pytest.fixture
 @pytest.fixture
+def other_staffuser(db, user_password):
+    user = create_test_superuser(
+        "OtherStaffuser", "otherstaffuser@example.com", user_password
+    )
+
+    user.is_superuser = False
+    user.save()
+    return user
+
+
+@pytest.fixture
 def superuser(db, user_password):
 def superuser(db, user_password):
     return create_test_superuser("Superuser", "superuser@example.com", user_password)
     return create_test_superuser("Superuser", "superuser@example.com", user_password)
 
 
@@ -90,6 +101,13 @@ def superuser_acl(superuser, cache_versions):
 
 
 
 
 @pytest.fixture
 @pytest.fixture
+def other_superuser(db, user_password):
+    return create_test_superuser(
+        "OtherSuperuser", "othersuperuser@example.com", user_password
+    )
+
+
+@pytest.fixture
 def admin_client(mocker, client, superuser):
 def admin_client(mocker, client, superuser):
     client.force_login(superuser)
     client.force_login(superuser)
     session = client.session
     session = client.session
@@ -99,6 +117,15 @@ def admin_client(mocker, client, superuser):
 
 
 
 
 @pytest.fixture
 @pytest.fixture
+def staff_client(mocker, client, staffuser):
+    client.force_login(staffuser)
+    session = client.session
+    authorize_admin(mocker.Mock(session=session, user=staffuser))
+    session.save()
+    return client
+
+
+@pytest.fixture
 def root_category(db):
 def root_category(db):
     return Category.objects.root_category()
     return Category.objects.root_category()
 
 

+ 1 - 5
misago/users/admin/__init__.py

@@ -16,11 +16,7 @@ from .views.ranks import (
     RanksList,
     RanksList,
     RankUsers,
     RankUsers,
 )
 )
-from .views.users import (
-    EditUser,
-    NewUser,
-    UsersList,
-)
+from .views.users import EditUser, NewUser, UsersList
 
 
 djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel)
 djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel)
 
 

+ 26 - 0
misago/users/admin/tests/test_deleting_user_with_content.py

@@ -0,0 +1,26 @@
+import pytest
+from django.contrib.auth import get_user_model
+
+from ..tasks import delete_user_with_content
+
+User = get_user_model()
+
+
+def test_task_does_nothing_for_nonexisting_user_id(db):
+    delete_user_with_content(1)
+
+
+def test_task_does_nothing_for_staff_user_id(staffuser):
+    delete_user_with_content(staffuser.id)
+    staffuser.refresh_from_db()
+
+
+def test_task_does_nothing_for_superuser_id(superuser):
+    delete_user_with_content(superuser.id)
+    superuser.refresh_from_db()
+
+
+def test_task_deletes_user(user):
+    delete_user_with_content(user.id)
+    with pytest.raises(User.DoesNotExist):
+        user.refresh_from_db()

+ 362 - 194
misago/users/admin/tests/test_users.py

@@ -13,6 +13,7 @@ from ....threads.test import post_thread, reply_thread
 from ...datadownloads import request_user_data_download
 from ...datadownloads import request_user_data_download
 from ...models import Ban, DataDownload, Rank
 from ...models import Ban, DataDownload, Rank
 from ...test import create_test_user
 from ...test import create_test_user
+from ...utils import hash_email
 
 
 User = get_user_model()
 User = get_user_model()
 
 
@@ -27,61 +28,378 @@ def test_list_renders_with_item(admin_client, users_admin_link, superuser):
     assert_contains(response, superuser.username)
     assert_contains(response, superuser.username)
 
 
 
 
-class UserAdminTests(AdminTestCase):
-    AJAX_HEADER = {"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"}
+def test_new_user_form_renders(admin_client):
+    response = admin_client.get(reverse("misago:admin:users:accounts:new"))
+    assert response.status_code == 200
+
+
+def test_new_user_can_be_created(admin_client):
+    default_rank = Rank.objects.get_default()
+    authenticated_role = Role.objects.get(special_role="authenticated")
+
+    admin_client.post(
+        reverse("misago:admin:users:accounts:new"),
+        data={
+            "username": "User",
+            "rank": str(default_rank.pk),
+            "roles": str(authenticated_role.pk),
+            "email": "user@example.com",
+            "new_password": "pass123",
+            "staff_level": "0",
+        },
+    )
+
+    user = User.objects.get_by_email("user@example.com")
+    assert user.username == "User"
+    assert user.rank == default_rank
+    assert authenticated_role in user.roles.all()
+    assert user.check_password("pass123")
+    assert not user.is_staff
+    assert not user.is_superuser
+
+
+def test_new_user_can_be_created_with_whitespace_around_password(admin_client):
+    default_rank = Rank.objects.get_default()
+    authenticated_role = Role.objects.get(special_role="authenticated")
+
+    admin_client.post(
+        reverse("misago:admin:users:accounts:new"),
+        data={
+            "username": "User",
+            "rank": str(default_rank.pk),
+            "roles": str(authenticated_role.pk),
+            "email": "user@example.com",
+            "new_password": "  pass123  ",
+            "staff_level": "0",
+        },
+    )
+
+    user = User.objects.get_by_email("user@example.com")
+    assert user.check_password("  pass123  ")
+
+
+def test_new_user_creation_fails_because_user_was_not_given_authenticated_role(
+    admin_client
+):
+    default_rank = Rank.objects.get_default()
+    guest_role = Role.objects.get(special_role="anonymous")
+
+    admin_client.post(
+        reverse("misago:admin:users:accounts:new"),
+        data={
+            "username": "User",
+            "rank": str(default_rank.pk),
+            "roles": str(guest_role.pk),
+            "email": "user@example.com",
+            "new_password": "pass123",
+            "staff_level": "0",
+        },
+    )
+
+    with pytest.raises(User.DoesNotExist):
+        User.objects.get_by_email("user@example.com")
+
+
+def test_edit_user_form_renders(admin_client, user):
+    response = admin_client.get(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk})
+    )
+    assert response.status_code == 200
+
+
+def test_edit_user_form_renders_for_staff_user(staff_client, user):
+    response = staff_client.get(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk})
+    )
+    assert response.status_code == 200
+
+
+def test_edit_staff_form_renders_for_staff_user(staff_client, other_staffuser):
+    response = staff_client.get(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": other_staffuser.pk})
+    )
+    assert response.status_code == 200
+
+
+def test_edit_superuser_form_renders_for_staff_user(staff_client, superuser):
+    response = staff_client.get(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": superuser.pk})
+    )
+    assert response.status_code == 200
+
+
+def get_default_edit_form_data(user):
+    default_rank = Rank.objects.get_default()
+    authenticated_role = Role.objects.get(special_role="authenticated")
+    data = {
+        "username": user.username,
+        "rank": str(user.rank_id),
+        "roles": str(user.roles.all()[0].id),
+        "email": user.email,
+        "new_password": "",
+        "signature": user.signature,
+        "is_signature_locked": str(user.is_signature_locked),
+        "is_hiding_presence": str(user.is_hiding_presence),
+        "limits_private_thread_invites_to": str(user.limits_private_thread_invites_to),
+        "signature_lock_staff_message": str(user.signature_lock_staff_message or ""),
+        "signature_lock_user_message": str(user.signature_lock_user_message or ""),
+        "subscribe_to_started_threads": str(user.subscribe_to_started_threads),
+        "subscribe_to_replied_threads": str(user.subscribe_to_replied_threads),
+        "is_active": "1",
+    }
+
+    if user.is_staff:
+        data["is_staff"] = "1"
+    if user.is_superuser:
+        data["is_superuser"] = "1"
+
+    return data
+
 
 
-    def test_new_view(self):
-        """new user view creates account"""
-        response = self.client.get(reverse("misago:admin:users:accounts:new"))
-        self.assertEqual(response.status_code, 200)
+def test_edit_form_changes_user_username(admin_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["username"] = "NewUsername"
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert user.username == "NewUsername"
+    assert user.slug == "newusername"
 
 
-        default_rank = Rank.objects.get_default()
-        authenticated_role = Role.objects.get(special_role="authenticated")
 
 
-        response = self.client.post(
-            reverse("misago:admin:users:accounts:new"),
-            data={
-                "username": "NewUsername",
-                "rank": str(default_rank.pk),
-                "roles": str(authenticated_role.pk),
-                "email": "edited@example.com",
-                "new_password": "pass123",
-                "staff_level": "0",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
+def test_editing_user_username_creates_entry_in_username_history(admin_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["username"] = "NewUsername"
 
 
-        User.objects.get_by_username("NewUsername")
-        test_user = User.objects.get_by_email("edited@example.com")
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
 
 
-        self.assertTrue(test_user.check_password("pass123"))
+    assert user.namechanges.exists()
 
 
-    def test_new_view_password_with_whitespaces(self):
-        """new user view creates account with whitespaces password"""
-        response = self.client.get(reverse("misago:admin:users:accounts:new"))
-        self.assertEqual(response.status_code, 200)
 
 
-        default_rank = Rank.objects.get_default()
-        authenticated_role = Role.objects.get(special_role="authenticated")
+def test_edit_form_changes_user_email(admin_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["email"] = "edited@example.com"
 
 
-        response = self.client.post(
-            reverse("misago:admin:users:accounts:new"),
-            data={
-                "username": "NewUsername",
-                "rank": str(default_rank.pk),
-                "roles": str(authenticated_role.pk),
-                "email": "edited@example.com",
-                "new_password": " pass123 ",
-                "staff_level": "0",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert user.email == "edited@example.com"
+    assert user.email_hash == hash_email("edited@example.com")
+
+
+def test_staff_user_cannot_degrade_superuser_to_staff_user(staff_client, superuser):
+    form_data = get_default_edit_form_data(superuser)
+    form_data["is_staff"] = "1"
+    form_data.pop("is_superuser")
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": superuser.pk}),
+        data=form_data,
+    )
+
+    superuser.refresh_from_db()
+    assert superuser.is_staff
+    assert superuser.is_superuser
+
+
+def test_staff_user_cannot_degrade_superuser_to_regular_user(staff_client, superuser):
+    form_data = get_default_edit_form_data(superuser)
+    form_data.pop("is_staff")
+    form_data.pop("is_superuser")
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": superuser.pk}),
+        data=form_data,
+    )
+
+    superuser.refresh_from_db()
+    assert superuser.is_staff
+    assert superuser.is_superuser
+
+
+def test_staff_user_cannot_promote_other_staff_user_to_superuser(
+    staff_client, other_staffuser
+):
+    form_data = get_default_edit_form_data(other_staffuser)
+    form_data["is_staff"] = "1"
+    form_data["is_superuser"] = "1"
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": other_staffuser.pk}),
+        data=form_data,
+    )
+
+    other_staffuser.refresh_from_db()
+    assert other_staffuser.is_staff
+    assert not other_staffuser.is_superuser
+
+
+def test_staff_user_cannot_promote_regular_user_to_staff(staff_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["is_staff"] = "1"
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert not user.is_staff
+
+
+def test_staff_user_cannot_promote_regular_user_to_superuser(staff_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["is_superuser"] = "1"
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert not user.is_superuser
+
+
+def test_staff_user_cannot_promote_themselves_to_superuser(staff_client, staffuser):
+    form_data = get_default_edit_form_data(staffuser)
+    form_data["is_superuser"] = "1"
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": staffuser.pk}),
+        data=form_data,
+    )
+
+    staffuser.refresh_from_db()
+    assert not staffuser.is_superuser
+
+
+def test_staff_user_cannot_degrade_themselves_to_regular_user(staff_client, staffuser):
+    form_data = get_default_edit_form_data(staffuser)
+    form_data.pop("is_staff")
+
+    response = staff_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": staffuser.pk}),
+        data=form_data,
+    )
+
+    staffuser.refresh_from_db()
+    assert staffuser.is_staff
 
 
-        User.objects.get_by_username("NewUsername")
-        test_user = User.objects.get_by_email("edited@example.com")
 
 
-        self.assertTrue(test_user.check_password(" pass123 "))
+def test_superuser_cannot_degrade_themselves_to_staff_user(admin_client, superuser):
+    form_data = get_default_edit_form_data(superuser)
+    form_data.pop("is_superuser")
 
 
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": superuser.pk}),
+        data=form_data,
+    )
+
+    superuser.refresh_from_db()
+    assert superuser.is_superuser
+
+
+def test_superuser_cannot_degrade_themselves_to_regular_user(admin_client, superuser):
+    form_data = get_default_edit_form_data(superuser)
+    form_data.pop("is_staff")
+    form_data.pop("is_superuser")
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": superuser.pk}),
+        data=form_data,
+    )
+
+    superuser.refresh_from_db()
+    assert superuser.is_staff
+    assert superuser.is_superuser
+
+
+def test_superuser_can_degrade_other_superuser_to_staff_user(
+    admin_client, other_superuser
+):
+    form_data = get_default_edit_form_data(other_superuser)
+    form_data.pop("is_superuser")
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": other_superuser.pk}),
+        data=form_data,
+    )
+
+    other_superuser.refresh_from_db()
+    assert other_superuser.is_staff
+    assert not other_superuser.is_superuser
+
+
+def test_superuser_can_degrade_other_superuser_to_regular_user(
+    admin_client, other_superuser
+):
+    form_data = get_default_edit_form_data(other_superuser)
+    form_data.pop("is_staff")
+    form_data.pop("is_superuser")
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": other_superuser.pk}),
+        data=form_data,
+    )
+
+    other_superuser.refresh_from_db()
+    assert not other_superuser.is_staff
+    assert not other_superuser.is_superuser
+
+
+def test_superuser_can_promote_to_staff_user_to_superuser(admin_client, staffuser):
+    form_data = get_default_edit_form_data(staffuser)
+    form_data["is_superuser"] = "1"
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": staffuser.pk}),
+        data=form_data,
+    )
+
+    staffuser.refresh_from_db()
+    assert staffuser.is_staff
+    assert staffuser.is_superuser
+
+
+def test_superuser_can_promote_to_regular_user_to_staff_user(admin_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["is_staff"] = "1"
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert user.is_staff
+    assert not user.is_superuser
+
+
+def test_superuser_can_promote_to_regular_user_to_superuser(admin_client, user):
+    form_data = get_default_edit_form_data(user)
+    form_data["is_staff"] = "1"
+    form_data["is_superuser"] = "1"
+
+    response = admin_client.post(
+        reverse("misago:admin:users:accounts:edit", kwargs={"pk": user.pk}),
+        data=form_data,
+    )
+
+    user.refresh_from_db()
+    assert user.is_staff
+    assert user.is_superuser
+
+
+class UserAdminTests(AdminTestCase):
     def test_edit_view(self):
     def test_edit_view(self):
         """edit user view changes account"""
         """edit user view changes account"""
         test_user = create_test_user("User", "user@example.com")
         test_user = create_test_user("User", "user@example.com")
@@ -198,156 +516,6 @@ class UserAdminTests(AdminTestCase):
         User.objects.get_by_username("NewUsername")
         User.objects.get_by_username("NewUsername")
         User.objects.get_by_email("edited@example.com")
         User.objects.get_by_email("edited@example.com")
 
 
-    def test_edit_make_admin(self):
-        """edit user view allows super admin to make other user admin"""
-        test_user = create_test_user("User", "user@example.com")
-        test_link = reverse(
-            "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
-        )
-
-        response = self.client.get(test_link)
-        self.assertContains(response, 'id="id_is_staff_1"')
-        self.assertContains(response, 'id="id_is_superuser_1"')
-
-        response = self.client.post(
-            test_link,
-            data={
-                "username": "NewUsername",
-                "rank": str(test_user.rank_id),
-                "roles": str(test_user.roles.all()[0].pk),
-                "email": "edited@example.com",
-                "is_staff": "1",
-                "is_superuser": "0",
-                "signature": "Hello world!",
-                "is_signature_locked": "1",
-                "is_hiding_presence": "0",
-                "limits_private_thread_invites_to": "0",
-                "signature_lock_staff_message": "Staff message",
-                "signature_lock_user_message": "User message",
-                "subscribe_to_started_threads": "2",
-                "subscribe_to_replied_threads": "2",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
-
-        updated_user = User.objects.get(pk=test_user.pk)
-        self.assertTrue(updated_user.is_staff)
-        self.assertFalse(updated_user.is_superuser)
-
-    def test_edit_make_superadmin_admin(self):
-        """edit user view allows super admin to make other user super admin"""
-        test_user = create_test_user("User", "user@example.com")
-        test_link = reverse(
-            "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
-        )
-
-        response = self.client.get(test_link)
-        self.assertContains(response, 'id="id_is_staff_1"')
-        self.assertContains(response, 'id="id_is_superuser_1"')
-
-        response = self.client.post(
-            test_link,
-            data={
-                "username": "NewUsername",
-                "rank": str(test_user.rank_id),
-                "roles": str(test_user.roles.all()[0].pk),
-                "email": "edited@example.com",
-                "is_staff": "0",
-                "is_superuser": "1",
-                "signature": "Hello world!",
-                "is_signature_locked": "1",
-                "is_hiding_presence": "0",
-                "limits_private_thread_invites_to": "0",
-                "signature_lock_staff_message": "Staff message",
-                "signature_lock_user_message": "User message",
-                "subscribe_to_started_threads": "2",
-                "subscribe_to_replied_threads": "2",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
-
-        updated_user = User.objects.get(pk=test_user.pk)
-        self.assertFalse(updated_user.is_staff)
-        self.assertTrue(updated_user.is_superuser)
-
-    def test_edit_denote_superadmin(self):
-        """edit user view allows super admin to denote other super admin"""
-        test_user = create_test_user(
-            "User", "user@example.com", is_staff=True, is_superuser=True
-        )
-
-        test_link = reverse(
-            "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
-        )
-
-        response = self.client.get(test_link)
-        self.assertContains(response, 'id="id_is_staff_1"')
-        self.assertContains(response, 'id="id_is_superuser_1"')
-
-        response = self.client.post(
-            test_link,
-            data={
-                "username": "NewUsername",
-                "rank": str(test_user.rank_id),
-                "roles": str(test_user.roles.all()[0].pk),
-                "email": "edited@example.com",
-                "is_staff": "0",
-                "is_superuser": "0",
-                "signature": "Hello world!",
-                "is_signature_locked": "1",
-                "is_hiding_presence": "0",
-                "limits_private_thread_invites_to": "0",
-                "signature_lock_staff_message": "Staff message",
-                "signature_lock_user_message": "User message",
-                "subscribe_to_started_threads": "2",
-                "subscribe_to_replied_threads": "2",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
-
-        updated_user = User.objects.get(pk=test_user.pk)
-        self.assertFalse(updated_user.is_staff)
-        self.assertFalse(updated_user.is_superuser)
-
-    def test_edit_cant_make_admin(self):
-        """edit user view forbids admins from making other admins"""
-        self.user.is_superuser = False
-        self.user.save()
-
-        test_user = create_test_user("User", "user@example.com")
-        test_link = reverse(
-            "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
-        )
-
-        response = self.client.get(test_link)
-        self.assertNotContains(response, 'id="id_is_staff_1"')
-        self.assertNotContains(response, 'id="id_is_superuser_1"')
-
-        response = self.client.post(
-            test_link,
-            data={
-                "username": "NewUsername",
-                "rank": str(test_user.rank_id),
-                "roles": str(test_user.roles.all()[0].pk),
-                "email": "edited@example.com",
-                "is_staff": "1",
-                "is_superuser": "1",
-                "signature": "Hello world!",
-                "is_signature_locked": "1",
-                "is_hiding_presence": "0",
-                "limits_private_thread_invites_to": "0",
-                "signature_lock_staff_message": "Staff message",
-                "signature_lock_user_message": "User message",
-                "subscribe_to_started_threads": "2",
-                "subscribe_to_replied_threads": "2",
-            },
-        )
-        self.assertEqual(response.status_code, 302)
-
-        updated_user = User.objects.get(pk=test_user.pk)
-        self.assertFalse(updated_user.is_staff)
-        self.assertFalse(updated_user.is_superuser)
-
     def test_edit_disable_user(self):
     def test_edit_disable_user(self):
         """edit user view allows admin to disable non admin"""
         """edit user view allows admin to disable non admin"""
         self.user.is_superuser = False
         self.user.is_superuser = False

+ 3 - 6
misago/users/admin/tests/test_users_mass_actions.py

@@ -173,9 +173,7 @@ def test_mass_action_is_not_requesting_data_downloads_for_users_with_existing_re
     assert not DataDownload.objects.exclude(id__in=downloads_ids).exists()
     assert not DataDownload.objects.exclude(id__in=downloads_ids).exists()
 
 
 
 
-def test_multiple_users_can_be_deleted_with_mass_action(
-    admin_client, users_admin_link
-):
+def test_multiple_users_can_be_deleted_with_mass_action(admin_client, users_admin_link):
     users = create_multiple_users()
     users = create_multiple_users()
     response = admin_client.post(
     response = admin_client.post(
         users_admin_link,
         users_admin_link,
@@ -231,7 +229,7 @@ def mock_delete_user_with_content(mocker):
     delay = mocker.Mock()
     delay = mocker.Mock()
     mocker.patch(
     mocker.patch(
         "misago.users.admin.views.users.delete_user_with_content",
         "misago.users.admin.views.users.delete_user_with_content",
-        mocker.Mock(delay=delay)
+        mocker.Mock(delay=delay),
     )
     )
     return delay
     return delay
 
 
@@ -240,8 +238,7 @@ def test_multiple_users_can_be_deleted_together_with_content_by_mass_action(
     admin_client, users_admin_link, users_ids, mock_delete_user_with_content
     admin_client, users_admin_link, users_ids, mock_delete_user_with_content
 ):
 ):
     response = admin_client.post(
     response = admin_client.post(
-        users_admin_link,
-        data={"action": "delete_all", "selected_items": users_ids},
+        users_admin_link, data={"action": "delete_all", "selected_items": users_ids}
     )
     )
 
 
     calls = [call(u) for u in users_ids]
     calls = [call(u) for u in users_ids]

+ 4 - 4
misago/users/admin/views/users.py

@@ -250,7 +250,10 @@ class UsersList(UserAdmin, generic.ListView):
 
 
         messages.success(
         messages.success(
             request,
             request,
-            _("Selected users accounts and content have been queued for deletion."),
+            _(
+                "Selected users have disabled and been queued for deletion "
+                "together with their content."
+            ),
         )
         )
 
 
 
 
@@ -274,9 +277,6 @@ class NewUser(UserAdmin, generic.ModelFormView):
             joined_from_ip=request.user_ip,
             joined_from_ip=request.user_ip,
         )
         )
 
 
-        if form.cleaned_data.get("staff_level"):
-            new_user.staff_level = form.cleaned_data["staff_level"]
-
         if form.cleaned_data.get("roles"):
         if form.cleaned_data.get("roles"):
             new_user.roles.add(*form.cleaned_data["roles"])
             new_user.roles.add(*form.cleaned_data["roles"])
 
 

+ 5 - 0
misago/users/signals.py

@@ -100,3 +100,8 @@ def remove_old_registrations_ips(sender, **kwargs):
 def remove_old_audit_trails(sender, **kwargs):
 def remove_old_audit_trails(sender, **kwargs):
     removal_cutoff = timezone.now() - timedelta(days=settings.MISAGO_IP_STORE_TIME)
     removal_cutoff = timezone.now() - timedelta(days=settings.MISAGO_IP_STORE_TIME)
     AuditTrail.objects.filter(created_on__lte=removal_cutoff).delete()
     AuditTrail.objects.filter(created_on__lte=removal_cutoff).delete()
+
+
+@receiver(delete_user_content)
+def remove_data_downloads(sender, **kwargs):
+    pass