Skip to content

Commit

Permalink
When changing a TelechatDate in the admin interface, retain all docum…
Browse files Browse the repository at this point in the history
…ent associations. Fixes #1349.  Commit ready for merge.

 - Legacy-Id: 13559
  • Loading branch information
rpcross committed Jun 7, 2017
1 parent 5188bdf commit 77f4bf2
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
14 changes: 13 additions & 1 deletion ietf/iesg/admin.py
@@ -1,10 +1,22 @@
from django.contrib import admin

from ietf.doc.models import TelechatDocEvent
from ietf.iesg.models import TelechatDate, TelechatAgendaItem

class TelechatAgendaItemAdmin(admin.ModelAdmin):
pass
admin.site.register(TelechatAgendaItem, TelechatAgendaItemAdmin)

admin.site.register(TelechatDate)
class TelechatDateAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
'''If changing a Telechat date, change all related TelechatDocEvents, which is how
documents are related to the Telechat
'''
super(TelechatDateAdmin, self).save_model(request, obj, form, change)
if 'date' in form.changed_data:
old_date = form.initial['date']
new_date = form.cleaned_data['date']
TelechatDocEvent.objects.filter(telechat_date=old_date).update(telechat_date=new_date)

admin.site.register(TelechatDate, TelechatDateAdmin)

11 changes: 10 additions & 1 deletion ietf/iesg/tests.py
Expand Up @@ -409,6 +409,16 @@ def test_agenda_telechat_docs(self):
self.assertTrue("Included" in [l for l in lines if d1_filename in l][0])
self.assertTrue("Not found" in [l for l in lines if d2_filename in l][0])

def test_admin_change(self):
draft = Document.objects.get(name="draft-ietf-mars-test")
today = datetime.date.today()
telechat_date = TelechatDate.objects.get(date=draft.telechat_date())
url = urlreverse('admin:iesg_telechatdate_change', args=(telechat_date.id,))
self.client.login(username="secretary", password="secretary+password")
r = self.client.post(url, {'date':today.strftime('%Y-%m-%d')})
self.assertRedirects(r, urlreverse('admin:iesg_telechatdate_changelist'))
self.assertEqual(draft.telechat_date(),today)

class RescheduleOnAgendaTests(TestCase):
def test_reschedule(self):
draft = make_test_data()
Expand Down Expand Up @@ -457,4 +467,3 @@ def test_reschedule(self):
self.assertEqual(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, d)
self.assertTrue(not draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").returning_item)
self.assertEqual(draft.docevent_set.count(), events_before + 1)

6 changes: 3 additions & 3 deletions ietf/utils/test_data.py
Expand Up @@ -20,7 +20,7 @@
from ietf.group.utils import setup_default_community_list_for_group
from ietf.review.models import (ReviewRequest, ReviewerSettings, ReviewResultName, ReviewTypeName, ReviewTeamSettings )

def create_person(group, role_name, name=None, username=None, email_address=None, password=None):
def create_person(group, role_name, name=None, username=None, email_address=None, password=None, is_staff=False, is_superuser=False):
"""Add person/user/email and role."""
if not name:
name = group.acronym.capitalize() + " " + role_name.capitalize()
Expand All @@ -31,7 +31,7 @@ def create_person(group, role_name, name=None, username=None, email_address=None
if not password:
password = username + "+password"

user = User.objects.create(username=username)
user = User.objects.create(username=username,is_staff=is_staff,is_superuser=is_superuser)
user.set_password(password)
user.save()
person = Person.objects.create(name=name, ascii=name, user=user)
Expand Down Expand Up @@ -69,7 +69,7 @@ def make_immutable_base_data():
create_person(irtf, "chair")

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

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

0 comments on commit 77f4bf2

Please sign in to comment.