mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-11 05:20:16 +02:00
Merge branch 'issue/1308-groups-without-assigned-group-leade' into 'v2.9.x'
[FIX] Pending Count for superuser for groups without group lead assigned Closes #1308 See merge request allianceauth/allianceauth!1349
This commit is contained in:
commit
f79e764439
@ -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:
|
||||
|
@ -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()
|
||||
|
@ -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",
|
||||
),
|
||||
]
|
@ -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)
|
||||
|
@ -31,7 +31,7 @@
|
||||
</a>
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary" disabled>
|
||||
{{ g.request.status }}
|
||||
{% translate "Pending" %}
|
||||
</button>
|
||||
{% endif %}
|
||||
{% elif not g.request %}
|
||||
@ -46,7 +46,7 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary" disabled>
|
||||
{{ g.request.status }}
|
||||
{% translate "Pending" %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user