Skip to content
Snippets Groups Projects
Commit 4c111a0e authored by HeJ's avatar HeJ
Browse files

Merge branch 'feature/204-list-slugname-related-assemblies' into 'develop'

feature(backoffice): add related assemblies to slugname list

Closes #204

See merge request !370
parents fa56aecf 59029e33
Branches
Tags v31.0.5
No related merge requests found
from datetime import datetime
from pytz import utc
import uuid
from django.test import TestCase, override_settings
from django.urls import reverse
from core.models import Assembly, Conference, ConferenceMember, PlatformUser, AssemblyLink
# from https://github.com/Grollicus/unittest_patterns/blob/master/unittest_patterns/__init__.py
class Pattern(object):
def __req__(self, lhs):
return self.__eq__(lhs)
__hash__ = None
# from https://github.com/Grollicus/unittest_patterns/blob/master/unittest_patterns/__init__.py
class Any(Pattern):
""" Equals everything """
def __eq__(self, rhs):
return True
class ThingWithLength(Pattern):
def __init__(self, _len):
self.len = _len
def __eq__(self, rhs):
return len(rhs) == self.len
TEST_CONF_ID = uuid.uuid4()
@override_settings(PLAINUI_CONFERENCE=TEST_CONF_ID)
class AssemblyListViewTest(TestCase):
def setUp(self):
self.conf = Conference(
id=TEST_CONF_ID,
name='conf_asdf',
slug='slug1',
start=datetime(2020, 1, 1, 0, 0, 0, tzinfo=utc),
end=datetime(2020, 1, 3, 0, 0, 0, tzinfo=utc),
is_public=True,
)
self.conf.save()
self.user = PlatformUser(username='testuser', email='no@where.test', is_staff=True, is_superuser=True)
self.user.save()
self.conference_member = ConferenceMember(conference=self.conf, user=self.user)
self.conference_member.save()
self.assemblies = [Assembly(slug=a, name=a, is_virtual=True, conference_id=self.conf.id, state_assembly=Assembly.State.ACCEPTED)
for a in ('a1', 'a2', 'a3')]
for a in self.assemblies:
a.save()
self.assembly_links = [
AssemblyLink(a=self.assemblies[0], b=self.assemblies[1]),
AssemblyLink(a=self.assemblies[0], b=self.assemblies[2])
]
for al in self.assembly_links:
al.save()
self.client.force_login(self.user)
def test_slugname_related_assemblies(self):
resp = self.client.get(reverse('backoffice:assemblieslist', kwargs={'variant': 'slugname'}))
self.assertIn(b'<td>a2, a3</td>', resp.content)
......@@ -11,7 +11,7 @@ from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView, View
from core.models.assemblies import Assembly, AssemblyMember
from core.models.assemblies import Assembly, AssemblyMember, AssemblyLink
from core.models.users import UserCommunicationChannel
from .mixins import ConferenceMixin
......@@ -182,10 +182,13 @@ class AssembliesListsView(AssembliesListMixin, View):
variant_fields = None
if variant == 'slugname':
# all assemblies with just slug + name
qs = self.get_queryset().values_list('slug', 'name')
# all assemblies with slug + name + related assemblies
qs = tuple(
(a.slug, a.name, ", ".join(link.b.name for link in AssemblyLink.objects.filter(a=a)))
for a in self.get_queryset()
)
variant_name = 'slug + name'
variant_fields = [_('Assembly__slug'), _('Assembly__name')]
variant_fields = [_('Assembly__slug'), _('Assembly__name'), _('assembly_links')]
elif variant == 'contactsmail':
# all assembly contacts' email addresses with duplicates removed
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment