Skip to content

Commit 9bd64ba

Browse files
committed
Merged in [13559] from rcross@amsl.com:
When changing a TelechatDate in the admin interface, retain all document associations. Fixes ietf-tools#1349. - Legacy-Id: 13577 Note: SVN reference [13559] has been migrated to Git commit 77f4bf2
1 parent 4dcdda0 commit 9bd64ba

3 files changed

Lines changed: 26 additions & 5 deletions

File tree

ietf/iesg/admin.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
from django.contrib import admin
22

3+
from ietf.doc.models import TelechatDocEvent
34
from ietf.iesg.models import TelechatDate, TelechatAgendaItem
45

56
class TelechatAgendaItemAdmin(admin.ModelAdmin):
67
pass
78
admin.site.register(TelechatAgendaItem, TelechatAgendaItemAdmin)
89

9-
admin.site.register(TelechatDate)
10+
class TelechatDateAdmin(admin.ModelAdmin):
11+
def save_model(self, request, obj, form, change):
12+
'''If changing a Telechat date, change all related TelechatDocEvents, which is how
13+
documents are related to the Telechat
14+
'''
15+
super(TelechatDateAdmin, self).save_model(request, obj, form, change)
16+
if 'date' in form.changed_data:
17+
old_date = form.initial['date']
18+
new_date = form.cleaned_data['date']
19+
TelechatDocEvent.objects.filter(telechat_date=old_date).update(telechat_date=new_date)
20+
21+
admin.site.register(TelechatDate, TelechatDateAdmin)
1022

ietf/iesg/tests.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,16 @@ def test_agenda_telechat_docs(self):
409409
self.assertTrue("Included" in [l for l in lines if d1_filename in l][0])
410410
self.assertTrue("Not found" in [l for l in lines if d2_filename in l][0])
411411

412+
def test_admin_change(self):
413+
draft = Document.objects.get(name="draft-ietf-mars-test")
414+
today = datetime.date.today()
415+
telechat_date = TelechatDate.objects.get(date=draft.telechat_date())
416+
url = urlreverse('admin:iesg_telechatdate_change', args=(telechat_date.id,))
417+
self.client.login(username="secretary", password="secretary+password")
418+
r = self.client.post(url, {'date':today.strftime('%Y-%m-%d')})
419+
self.assertRedirects(r, urlreverse('admin:iesg_telechatdate_changelist'))
420+
self.assertEqual(draft.telechat_date(),today)
421+
412422
class RescheduleOnAgendaTests(TestCase):
413423
def test_reschedule(self):
414424
draft = make_test_data()
@@ -457,4 +467,3 @@ def test_reschedule(self):
457467
self.assertEqual(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, d)
458468
self.assertTrue(not draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").returning_item)
459469
self.assertEqual(draft.docevent_set.count(), events_before + 1)
460-

ietf/utils/test_data.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ietf.group.utils import setup_default_community_list_for_group
2121
from ietf.review.models import (ReviewRequest, ReviewerSettings, ReviewResultName, ReviewTypeName, ReviewTeamSettings )
2222

23-
def create_person(group, role_name, name=None, username=None, email_address=None, password=None):
23+
def create_person(group, role_name, name=None, username=None, email_address=None, password=None, is_staff=False, is_superuser=False):
2424
"""Add person/user/email and role."""
2525
if not name:
2626
name = group.acronym.capitalize() + " " + role_name.capitalize()
@@ -31,7 +31,7 @@ def create_person(group, role_name, name=None, username=None, email_address=None
3131
if not password:
3232
password = username + "+password"
3333

34-
user = User.objects.create(username=username)
34+
user = User.objects.create(username=username,is_staff=is_staff,is_superuser=is_superuser)
3535
user.set_password(password)
3636
user.save()
3737
person = Person.objects.create(name=name, ascii=name, user=user)
@@ -69,7 +69,7 @@ def make_immutable_base_data():
6969
create_person(irtf, "chair")
7070

7171
secretariat = create_group(name="IETF Secretariat", acronym="secretariat", type_id="ietf")
72-
create_person(secretariat, "secr", name="Sec Retary", username="secretary")
72+
create_person(secretariat, "secr", name="Sec Retary", username="secretary", is_staff=True, is_superuser=True)
7373

7474
iab = create_group(name="Internet Architecture Board", acronym="iab", type_id="ietf", parent=ietf)
7575
create_person(iab, "chair")

0 commit comments

Comments
 (0)