diff --git a/src/backoffice/tests/assemblies.py b/src/backoffice/tests/assemblies.py index 78f644e461584a049c3ef6dcead6ad91a6cb56df..5e636efc71dbba0ce0db55c3fe7d0d8c40fa7566 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 5b684b9d80c4294dde766c3557038288cff8a075..5acc01978b75af7ddb30e0f9e21273af787f352e 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()