From 6a06e9da73ff4afa4b496fd4115e40c2c8ac62b6 Mon Sep 17 00:00:00 2001 From: Lucas Brandstaetter <lucas@brandstaetter.tech> Date: Wed, 30 Oct 2024 10:59:19 +0100 Subject: [PATCH] Fix assembly member view During the manager update I accidentally removed the `manageable_by_user_for_assembly` method. This commit adds it back. Fixes #586 --- src/backoffice/tests/assemblies.py | 26 +++++++++++++++++++++++++- src/core/models/assemblies.py | 3 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/backoffice/tests/assemblies.py b/src/backoffice/tests/assemblies.py index 78f644e46..5e636efc7 100644 --- a/src/backoffice/tests/assemblies.py +++ b/src/backoffice/tests/assemblies.py @@ -1,6 +1,8 @@ from django.urls import reverse -from core.models import Assembly, AssemblyLink +from core.models import Assembly, AssemblyLink, AssemblyMember +from core.models.conference import ConferenceMember +from core.models.users import PlatformUser from backoffice.tests import BackOfficeTestCase @@ -22,3 +24,25 @@ class AssemblyListViewTest(BackOfficeTestCase): resp = self.client.get(reverse('backoffice:assemblieslist', kwargs={'variant': 'slugname'})) self.assertEqual(resp.context['data'][0][3], 'a2, a3') self.assertIn(b'a2, a3', resp.content) + + +class AssemblyMembersViewTest(BackOfficeTestCase): + def setUp(self): + super().setUp() + self.assembly = Assembly.objects.create(slug='a1', name='a1', is_physical=True, conference_id=self.conf.id, state_assembly=Assembly.State.ACCEPTED) + self.users: list[PlatformUser] = [ + PlatformUser.objects.create( + username=a, + ) + for a in ('a1', 'a2', 'a3') + ] + members: list[ConferenceMember] = [] + for user in self.users: + members.append(ConferenceMember.objects.create(user=user, conference=self.conf)) + user.associated_assemblies.add(AssemblyMember.objects.create(member=user, assembly=self.assembly)) + + def test_member_list(self): + self.client.force_login(self.staff) + resp = self.client.get(reverse('backoffice:assembly-members', kwargs={'pk': self.assembly.id})) + self.assertEqual(resp.status_code, 200) + self.assertEqual(resp.context['object_list'].count(), 3) diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py index 5b684b9d8..5acc01978 100644 --- a/src/core/models/assemblies.py +++ b/src/core/models/assemblies.py @@ -555,6 +555,9 @@ class AssemblyMemberManager(ConferenceManagerMixin['AssemblyMember']): def apply_public_filter(self, queryset: 'QuerySet[AssemblyMember]', member: ConferenceMember | None = None) -> 'QuerySet[AssemblyMember]': return queryset.filter(show_public=True) + def manageable_by_user_for_assembly(self, *, user: PlatformUser, assembly: 'Assembly') -> 'QuerySet[AssemblyMember]': + return self.manageable_by_user(conference=assembly.conference, user=user).filter(assembly=assembly) + class AssemblyMember(models.Model): objects = AssemblyMemberManager() -- GitLab