From 803b659fceb59dd963fd1fbf12ea1e1f3b7884a5 Mon Sep 17 00:00:00 2001 From: Peter Pfeufer Date: Wed, 20 Oct 2021 05:00:09 +0000 Subject: [PATCH] [FIX] Pending Count for superuser for groups without group lead assigned --- allianceauth/groupmanagement/admin.py | 3 +- allianceauth/groupmanagement/managers.py | 3 +- .../0016_remove_grouprequest_status_field.py | 17 +++++++++++ allianceauth/groupmanagement/models.py | 1 - .../templates/groupmanagement/groups.html | 4 +-- .../groupmanagement/tests/test_managers.py | 28 +++++++++++++++---- .../groupmanagement/tests/test_models.py | 2 -- allianceauth/groupmanagement/views.py | 2 -- 8 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 allianceauth/groupmanagement/migrations/0016_remove_grouprequest_status_field.py diff --git a/allianceauth/groupmanagement/admin.py b/allianceauth/groupmanagement/admin.py index 6dce3baf..44750aab 100644 --- a/allianceauth/groupmanagement/admin.py +++ b/allianceauth/groupmanagement/admin.py @@ -195,12 +195,11 @@ finally: @admin.register(GroupRequest) class GroupRequestAdmin(admin.ModelAdmin): search_fields = ('user__username', ) - list_display = ('id', 'group', 'user', '_leave_request', 'status') + list_display = ('id', 'group', 'user', '_leave_request') list_filter = ( ('group', admin.RelatedOnlyFieldListFilter), ('user', admin.RelatedOnlyFieldListFilter), 'leave_request', - 'status' ) def _leave_request(self, obj) -> True: diff --git a/allianceauth/groupmanagement/managers.py b/allianceauth/groupmanagement/managers.py index 5ba2f3dd..d85771dd 100644 --- a/allianceauth/groupmanagement/managers.py +++ b/allianceauth/groupmanagement/managers.py @@ -108,11 +108,10 @@ class GroupManager: """Returns the number of pending group requests for the given user""" if cls.has_management_permission(user): - return GroupRequest.objects.filter(status="pending").count() + return GroupRequest.objects.all().count() else: return ( GroupRequest.objects - .filter(status="pending") .filter(group__authgroup__group_leaders__exact=user) .select_related("group__authgroup__group_leaders") .count() diff --git a/allianceauth/groupmanagement/migrations/0016_remove_grouprequest_status_field.py b/allianceauth/groupmanagement/migrations/0016_remove_grouprequest_status_field.py new file mode 100644 index 00000000..f0154eb4 --- /dev/null +++ b/allianceauth/groupmanagement/migrations/0016_remove_grouprequest_status_field.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.8 on 2021-10-19 18:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("groupmanagement", "0015_make_descriptions_great_again"), + ] + + operations = [ + migrations.RemoveField( + model_name="grouprequest", + name="status", + ), + ] diff --git a/allianceauth/groupmanagement/models.py b/allianceauth/groupmanagement/models.py index 5fb60a75..0959ccb1 100644 --- a/allianceauth/groupmanagement/models.py +++ b/allianceauth/groupmanagement/models.py @@ -7,7 +7,6 @@ from allianceauth.authentication.models import State class GroupRequest(models.Model): - status = models.CharField(max_length=254) leave_request = models.BooleanField(default=0) user = models.ForeignKey(User, on_delete=models.CASCADE) group = models.ForeignKey(Group, on_delete=models.CASCADE) diff --git a/allianceauth/groupmanagement/templates/groupmanagement/groups.html b/allianceauth/groupmanagement/templates/groupmanagement/groups.html index a577402c..30496071 100644 --- a/allianceauth/groupmanagement/templates/groupmanagement/groups.html +++ b/allianceauth/groupmanagement/templates/groupmanagement/groups.html @@ -31,7 +31,7 @@ {% else %} {% endif %} {% elif not g.request %} @@ -46,7 +46,7 @@ {% endif %} {% else %} {% endif %} diff --git a/allianceauth/groupmanagement/tests/test_managers.py b/allianceauth/groupmanagement/tests/test_managers.py index 0660628c..c8f9ae53 100644 --- a/allianceauth/groupmanagement/tests/test_managers.py +++ b/allianceauth/groupmanagement/tests/test_managers.py @@ -339,11 +339,16 @@ class TestPendingRequestsCountForUser(TestCase): def setUp(self) -> None: self.group_1 = Group.objects.create(name="Group 1") self.group_2 = Group.objects.create(name="Group 2") + self.group_3 = Group.objects.create(name="Group 3") + self.user_leader_1 = AuthUtils.create_member('Clark Kent') self.group_1.authgroup.group_leaders.add(self.user_leader_1) self.user_leader_2 = AuthUtils.create_member('Peter Parker') self.group_2.authgroup.group_leaders.add(self.user_leader_2) + self.user_requestor = AuthUtils.create_member('Bruce Wayne') + self.user_superuser = AuthUtils.create_member('Q') + self.user_superuser.is_superuser = True def test_single_request_for_leader(self): # given user_leader_1 is leader of group_1 @@ -351,7 +356,7 @@ class TestPendingRequestsCountForUser(TestCase): # when user_requestor is requesting access to group 1 # then return 1 for user_leader 1 and 0 for user_leader_2 GroupRequest.objects.create( - status="pending", user=self.user_requestor, group=self.group_1 + user=self.user_requestor, group=self.group_1 ) self.assertEqual( GroupManager.pending_requests_count_for_user(self.user_leader_1), 1 @@ -365,7 +370,21 @@ class TestPendingRequestsCountForUser(TestCase): # when user_requestor is requesting access to group 1 # then return 0 for user_requestor GroupRequest.objects.create( - status="pending", user=self.user_requestor, group=self.group_1 + user=self.user_requestor, group=self.group_1 + ) + self.assertEqual( + GroupManager.pending_requests_count_for_user(self.user_requestor), 0 + ) + + def test_single_request_for_superuser(self): + # given group_3 has no leader + # when user_requestor is requesting access to group 1 + # then return 1 for user_superuser but 0 for user_requestor + GroupRequest.objects.create( + user=self.user_requestor, group=self.group_3 + ) + self.assertEqual( + GroupManager.pending_requests_count_for_user(self.user_superuser), 1 ) self.assertEqual( GroupManager.pending_requests_count_for_user(self.user_requestor), 0 @@ -379,7 +398,6 @@ class TestPendingRequestsCountForUser(TestCase): self.user_requestor.groups.add(self.group_2) GroupRequest.objects.create( - status="pending", user=self.user_requestor, group=self.group_2, leave_request=True @@ -397,12 +415,10 @@ class TestPendingRequestsCountForUser(TestCase): self.user_requestor.groups.add(self.group_2) user_requestor_2 = AuthUtils.create_member("Lex Luther") GroupRequest.objects.create( - status="pending", user=user_requestor_2, group=self.group_2 ) GroupRequest.objects.create( - status="pending", user=self.user_requestor, group=self.group_2, leave_request=True @@ -420,7 +436,7 @@ class TestPendingRequestsCountForUser(TestCase): AuthUtils.add_permission_to_user_by_name("auth.group_management", user_leader_4) user_leader_4 = User.objects.get(pk=user_leader_4.pk) GroupRequest.objects.create( - status="pending", user=self.user_requestor, group=self.group_1 + user=self.user_requestor, group=self.group_1 ) self.assertEqual( GroupManager.pending_requests_count_for_user(self.user_leader_1), 1 diff --git a/allianceauth/groupmanagement/tests/test_models.py b/allianceauth/groupmanagement/tests/test_models.py index 9fdacd38..d3737e4f 100644 --- a/allianceauth/groupmanagement/tests/test_models.py +++ b/allianceauth/groupmanagement/tests/test_models.py @@ -60,7 +60,6 @@ class TestGroupRequest(TestCase): def test_main_char(self): group_request = GroupRequest.objects.create( - status='Pending', user=self.user_1, group=self.group ) @@ -69,7 +68,6 @@ class TestGroupRequest(TestCase): def test_str(self): group_request = GroupRequest.objects.create( - status='Pending', user=self.user_1, group=self.group ) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index bae689f3..f351c288 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -354,7 +354,6 @@ def group_request_add(request, group_id): messages.warning(request, _("You already have a pending application for that group.")) return redirect("groupmanagement:groups") grouprequest = GroupRequest() - grouprequest.status = _('Pending') grouprequest.group = group grouprequest.user = request.user grouprequest.leave_request = False @@ -396,7 +395,6 @@ def group_request_leave(request, group_id): request.user.groups.remove(group) return redirect('groupmanagement:groups') grouprequest = GroupRequest() - grouprequest.status = _('Pending') grouprequest.group = group grouprequest.user = request.user grouprequest.leave_request = True