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 hub/hub!370
parents fa56aecf 59029e33
Branches
Tags
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