Skip to content

Commit 7300859

Browse files
authored
fix: Enable editing of related liaison statement information (ietf-tools#6371)
Fixes ietf-tools#6264
1 parent 910a266 commit 7300859

3 files changed

Lines changed: 22 additions & 5 deletions

File tree

ietf/liaisons/factories.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import factory
22

33
from ietf.group.factories import GroupFactory
4-
from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, LiaisonStatementAttachment
4+
from ietf.liaisons.models import LiaisonStatement, LiaisonStatementEvent, LiaisonStatementAttachment, RelatedLiaisonStatement
55

66
class LiaisonStatementFactory(factory.django.DjangoModelFactory):
77
class Meta:
@@ -50,3 +50,12 @@ class Meta:
5050
type_id='liai-att',
5151
# TODO: Make name more convenient (the default now is to try to generate a draftname)
5252
)
53+
54+
55+
class RelatedLiaisonStatementFactory(factory.django.DjangoModelFactory):
56+
class Meta:
57+
model = RelatedLiaisonStatement
58+
59+
source = factory.SubFactory(LiaisonStatementFactory)
60+
target = factory.SubFactory(LiaisonStatementFactory)
61+
relationship_id = "refunk"

ietf/liaisons/forms.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,8 +520,7 @@ def __init__(self, *args, **kwargs):
520520
super(EditLiaisonForm, self).__init__(*args, **kwargs)
521521
self.edit = True
522522
self.fields['attachments'].initial = self.instance.liaisonstatementattachment_set.exclude(removed=True)
523-
related = [ str(x.pk) for x in self.instance.source_of_set.all() ]
524-
self.fields['related_to'].initial = ','.join(related)
523+
self.fields['related_to'].initial = [ x.target for x in self.instance.source_of_set.all() ]
525524
self.fields['submitted_date'].initial = self.instance.submitted
526525

527526
def save(self, *args, **kwargs):

ietf/liaisons/tests.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from ietf.group.factories import GroupFactory, RoleFactory
2626
from ietf.liaisons.factories import ( LiaisonStatementFactory,
27-
LiaisonStatementEventFactory, LiaisonStatementAttachmentFactory, )
27+
LiaisonStatementEventFactory, LiaisonStatementAttachmentFactory, RelatedLiaisonStatementFactory)
2828
from ietf.liaisons.models import (LiaisonStatement, LiaisonStatementPurposeName,
2929
LiaisonStatementAttachment)
3030
from ietf.person.models import Person
@@ -393,6 +393,8 @@ def test_edit_liaison(self):
393393
LiaisonStatementEventFactory(statement=liaison,type_id='posted')
394394
from_group = liaison.from_groups.first()
395395
to_group = liaison.to_groups.first()
396+
rel1 = RelatedLiaisonStatementFactory(source=liaison)
397+
rel2 = RelatedLiaisonStatementFactory(source=liaison)
396398

397399
url = urlreverse('ietf.liaisons.views.liaison_edit', kwargs=dict(object_id=liaison.pk))
398400
login_testing_unauthorized(self, "secretary", url)
@@ -402,6 +404,13 @@ def test_edit_liaison(self):
402404
self.assertEqual(r.status_code, 200)
403405
q = PyQuery(r.content)
404406
self.assertEqual(len(q('form input[name=from_contact]')), 1)
407+
json_data = q('form select[name=related_to]').attr('data-pre')
408+
try:
409+
decoded = json.loads(json_data)
410+
except json.JSONDecodeError as e:
411+
self.fail('data-pre contained invalid JSON data: %s' % str(e))
412+
decoded_ids = [item['id'] for item in decoded]
413+
self.assertEqual(decoded_ids, [rel1.target.id, rel2.target.id])
405414

406415
# edit
407416
attachments_before = liaison.attachments.count()
@@ -1165,4 +1174,4 @@ def test_send_liaison_deadline_reminder(self):
11651174

11661175
mailbox_before = len(outbox)
11671176
possibly_send_deadline_reminder(liaison)
1168-
self.assertEqual(len(outbox), mailbox_before)
1177+
self.assertEqual(len(outbox), mailbox_before)

0 commit comments

Comments
 (0)