From 73008596eeffb23cda553baa21a4926e1faad627 Mon Sep 17 00:00:00 2001 From: Lars Eggert Date: Mon, 25 Sep 2023 18:17:35 +0300 Subject: [PATCH] fix: Enable editing of related liaison statement information (#6371) Fixes #6264 --- ietf/liaisons/factories.py | 11 ++++++++++- ietf/liaisons/forms.py | 3 +-- ietf/liaisons/tests.py | 13 +++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ietf/liaisons/factories.py b/ietf/liaisons/factories.py index 6e5500889..6d93cf8cd 100644 --- a/ietf/liaisons/factories.py +++ b/ietf/liaisons/factories.py @@ -1,7 +1,7 @@ import factory from ietf.group.factories import GroupFactory -from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, LiaisonStatementAttachment +from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, LiaisonStatementAttachment, RelatedLiaisonStatement class LiaisonStatementFactory(factory.django.DjangoModelFactory): class Meta: @@ -50,3 +50,12 @@ class LiaisonStatementAttachmentFactory(factory.django.DjangoModelFactory): type_id='liai-att', # TODO: Make name more convenient (the default now is to try to generate a draftname) ) + + +class RelatedLiaisonStatementFactory(factory.django.DjangoModelFactory): + class Meta: + model = RelatedLiaisonStatement + + source = factory.SubFactory(LiaisonStatementFactory) + target = factory.SubFactory(LiaisonStatementFactory) + relationship_id = "refunk" diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index b41351b94..605c19902 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -520,8 +520,7 @@ class EditLiaisonForm(LiaisonModelForm): super(EditLiaisonForm, self).__init__(*args, **kwargs) self.edit = True self.fields['attachments'].initial = self.instance.liaisonstatementattachment_set.exclude(removed=True) - related = [ str(x.pk) for x in self.instance.source_of_set.all() ] - self.fields['related_to'].initial = ','.join(related) + self.fields['related_to'].initial = [ x.target for x in self.instance.source_of_set.all() ] self.fields['submitted_date'].initial = self.instance.submitted def save(self, *args, **kwargs): diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index f2fd5c452..a0186f6a0 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -24,7 +24,7 @@ from ietf.utils.mail import outbox from ietf.group.factories import GroupFactory, RoleFactory from ietf.liaisons.factories import ( LiaisonStatementFactory, - LiaisonStatementEventFactory, LiaisonStatementAttachmentFactory, ) + LiaisonStatementEventFactory, LiaisonStatementAttachmentFactory, RelatedLiaisonStatementFactory) from ietf.liaisons.models import (LiaisonStatement, LiaisonStatementPurposeName, LiaisonStatementAttachment) from ietf.person.models import Person @@ -393,6 +393,8 @@ class LiaisonManagementTests(TestCase): LiaisonStatementEventFactory(statement=liaison,type_id='posted') from_group = liaison.from_groups.first() to_group = liaison.to_groups.first() + rel1 = RelatedLiaisonStatementFactory(source=liaison) + rel2 = RelatedLiaisonStatementFactory(source=liaison) url = urlreverse('ietf.liaisons.views.liaison_edit', kwargs=dict(object_id=liaison.pk)) login_testing_unauthorized(self, "secretary", url) @@ -402,6 +404,13 @@ class LiaisonManagementTests(TestCase): self.assertEqual(r.status_code, 200) q = PyQuery(r.content) self.assertEqual(len(q('form input[name=from_contact]')), 1) + json_data = q('form select[name=related_to]').attr('data-pre') + try: + decoded = json.loads(json_data) + except json.JSONDecodeError as e: + self.fail('data-pre contained invalid JSON data: %s' % str(e)) + decoded_ids = [item['id'] for item in decoded] + self.assertEqual(decoded_ids, [rel1.target.id, rel2.target.id]) # edit attachments_before = liaison.attachments.count() @@ -1165,4 +1174,4 @@ class LiaisonManagementTests(TestCase): mailbox_before = len(outbox) possibly_send_deadline_reminder(liaison) - self.assertEqual(len(outbox), mailbox_before) \ No newline at end of file + self.assertEqual(len(outbox), mailbox_before)