fix: Enable editing of related liaison statement information (#6371)

Fixes #6264
This commit is contained in:
Lars Eggert 2023-09-25 18:17:35 +03:00 committed by GitHub
parent 910a266126
commit 73008596ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 5 deletions

View file

@ -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"

View file

@ -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):

View file

@ -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)
self.assertEqual(len(outbox), mailbox_before)