Merged in [13559] from rcross@amsl.com:
When changing a TelechatDate in the admin interface, retain all document associations. Fixes #1349.
- Legacy-Id: 13577
Note: SVN reference [13559] has been migrated to Git commit 77f4bf21ff
This commit is contained in:
parent
4dcdda08d2
commit
9bd64ba6f2
|
@ -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)
|
||||
|
||||
|
|
|
@ -409,6 +409,16 @@ class IESGAgendaTests(TestCase):
|
|||
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()
|
||||
|
@ -457,4 +467,3 @@ class RescheduleOnAgendaTests(TestCase):
|
|||
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)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ from ietf.person.models import Person, Email
|
|||
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()
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
|
Loading…
Reference in a new issue