From 2835de805237dbf99e735ce5322dbece7a19b167 Mon Sep 17 00:00:00 2001 From: Geet Sethi Date: Sun, 17 Dec 2023 15:46:22 +0530 Subject: [PATCH] refactor: merge AppP and ModC body roles - Remove the AppP body role - Rename the ModC body role - Replace all occurences of AppP with ModC - Migrate all records in DB that refereced AppP to now use ModC --- community/tests.py | 6 ++- community/views.py | 13 +++--- other/tasks.py | 2 +- .../0022_alter_bodyrole_permissions.py | 40 +++++++++++++++++++ roles/models.py | 3 +- 5 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 roles/migrations/0022_alter_bodyrole_permissions.py diff --git a/community/tests.py b/community/tests.py index c76867c7..847b9583 100644 --- a/community/tests.py +++ b/community/tests.py @@ -28,7 +28,7 @@ def setUp(self): self.test_body_2 = create_body() self.body_1_role = BodyRole.objects.create( - name="Body1Role", body=self.test_body_1, permissions="AppP,ModC" + name="Body1Role", body=self.test_body_1, permissions="ModC" ) self.user1.profile.roles.add(self.body_1_role) @@ -89,7 +89,9 @@ def test_communitypost_yourlist(self): self.assertEqual( response.data["count"], CommunityPost.objects.filter( - thread_rank=1, posted_by=self.user1.profile, community=self.test_community_1 + thread_rank=1, + posted_by=self.user1.profile, + community=self.test_community_1, ).count(), ) self.assertListEqual( diff --git a/community/views.py b/community/views.py index df942298..d7f12c1e 100644 --- a/community/views.py +++ b/community/views.py @@ -31,11 +31,8 @@ def change_status(self, request, pk): post = self.get_community_post(pk) if ( - user_has_privilege(request.user.profile, post.community.body.id, "AppP") - and post.thread_rank == 1 - ) or ( user_has_privilege(request.user.profile, post.community.body.id, "ModC") - and post.thread_rank > 1 + and post.thread_rank > 0 ): # Get query param status = request.data["status"] @@ -72,7 +69,7 @@ def retrieve_full(self, request, pk): ) post = self.get_community_post(pk) return_for_mod = False - if user_has_privilege(request.user.profile, post.community.body.id, "AppP"): + if user_has_privilege(request.user.profile, post.community.body.id, "ModC"): return_for_mod = True serialized = CommunityPostSerializers( post, context={"return_for_mod": return_for_mod} @@ -112,7 +109,7 @@ def list(self, request): queryset = query_search(request, 3, queryset, ["content"], "posts") queryset = query_from_num(request, 20, queryset) return_for_mod = False - if user_has_privilege(request.user.profile, community.body.id, "AppP"): + if user_has_privilege(request.user.profile, community.body.id, "ModC"): return_for_mod = True serializer = CommunityPostSerializerMin( @@ -153,7 +150,7 @@ def perform_action(self, request, action, pk): if all( [ user_has_privilege( - request.user.profile, post.community.body.id, "AppP" + request.user.profile, post.community.body.id, "ModC" ) ] ): @@ -184,7 +181,7 @@ def perform_action(self, request, action, pk): if all( [ user_has_privilege( - request.user.profile, post.community.body.id, "AppP" + request.user.profile, post.community.body.id, "ModC" ) ] ): diff --git a/other/tasks.py b/other/tasks.py index f4d90f0b..2371b34a 100644 --- a/other/tasks.py +++ b/other/tasks.py @@ -129,7 +129,7 @@ def notify_new_commpostadmin(pk): roles = instance.community.body.roles.all() users = [] for role in roles: - if "AppP" in role.permissions: + if "ModC" in role.permissions: users.extend(map(lambda user: user.user, role.users.all())) print(users) notify.send( diff --git a/roles/migrations/0022_alter_bodyrole_permissions.py b/roles/migrations/0022_alter_bodyrole_permissions.py new file mode 100644 index 00000000..9303d9e7 --- /dev/null +++ b/roles/migrations/0022_alter_bodyrole_permissions.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.16 on 2023-12-16 12:02 + +from django.db import migrations +import multiselectfield.db.fields + + +def migrate_AppP_role_to_ModC_role(apps, schema_editor): + BodyRole = apps.get_model("roles", "BodyRole") + + for obj in BodyRole.objects.filter(permissions__contains="AppP"): + obj.permissions.remove("AppP") + if "ModC" not in obj.permissions: + obj.permissions.append("ModC") + obj.save() + + +class Migration(migrations.Migration): + dependencies = [ + ("roles", "0021_delete_communityrole"), + ] + + operations = [ + migrations.AlterField( + model_name="bodyrole", + name="permissions", + field=multiselectfield.db.fields.MultiSelectField( + choices=[ + ("AddE", "Add Event"), + ("UpdE", "Update Event"), + ("DelE", "Delete Event"), + ("UpdB", "Update Body"), + ("Role", "Modify Roles"), + ("VerA", "Verify Achievements"), + ("ModC", "Moderate Community"), + ], + max_length=34, + ), + ), + migrations.RunPython(migrate_AppP_role_to_ModC_role), + ] diff --git a/roles/models.py b/roles/models.py index 9f87d400..09451e35 100644 --- a/roles/models.py +++ b/roles/models.py @@ -10,8 +10,7 @@ ("UpdB", "Update Body"), ("Role", "Modify Roles"), ("VerA", "Verify Achievements"), - ("AppP", "Moderate Post"), - ("ModC", "Moderate Comment"), + ("ModC", "Moderate Community"), )