diff --git a/ietf/liaisons/formsREDESIGN.py b/ietf/liaisons/formsREDESIGN.py
index 509e5876e..c1b36088b 100644
--- a/ietf/liaisons/formsREDESIGN.py
+++ b/ietf/liaisons/formsREDESIGN.py
@@ -80,6 +80,11 @@ class LiaisonForm(forms.Form):
x = getattr(self.instance, name)
if name == "purpose": # proxy has a name-clash on purpose so help it
x = x.order
+
+ try:
+ x = x.pk # foreign keys need the .pk, not the actual object
+ except AttributeError:
+ pass
self.initial[name] = x
except AttributeError:
# we have some fields on the form that aren't in the model
diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py
index 6c156080f..78cd9c43d 100644
--- a/ietf/liaisons/tests.py
+++ b/ietf/liaisons/tests.py
@@ -22,7 +22,7 @@ class LiaisonsUrlTestCase(SimpleUrlTestCase):
return content
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
- from ietf.liaisons.models import LiaisonStatement
+ from ietf.liaisons.models import LiaisonStatement, LiaisonStatementPurposeName
from redesign.person.models import Person, Email
from redesign.group.models import Group, Role
@@ -87,7 +87,7 @@ class LiaisonManagementTestCase(django.test.TestCase):
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=do_action_taken]')), 0)
- # logged in and get
+ # log in and get
self.client.login(remote_user="secretary")
r = self.client.get(url)
@@ -103,7 +103,51 @@ class LiaisonManagementTestCase(django.test.TestCase):
liaison = LiaisonStatement.objects.get(id=liaison.id)
self.assertTrue(liaison.action_taken)
+ def test_edit_liaison(self):
+ make_test_data()
+ liaison = make_liaison_models()
+ url = urlreverse('liaison_edit', kwargs=dict(object_id=liaison.pk))
+ login_testing_unauthorized(self, "secretary", url)
+
+ # get
+ r = self.client.get(url)
+ self.assertEquals(r.status_code, 200)
+ q = PyQuery(r.content)
+ self.assertEquals(len(q('form input[name=from_field]')), 1)
+
+ # edit
+ r = self.client.post(url,
+ dict(from_field="from",
+ replyto="replyto@example.com",
+ organization="org",
+ to_poc="to_poc@example.com",
+ response_contact="responce_contact@example.com",
+ technical_contact="technical_contact@example.com",
+ cc1="cc1@example.com",
+ purpose="4",
+ deadline_date=(liaison.deadline + datetime.timedelta(days=1)).strftime("%Y-%m-%d"),
+ title="title",
+ submitted_date=(liaison.submitted + datetime.timedelta(days=1)).strftime("%Y-%m-%d"),
+ body="body",
+ ))
+ self.assertEquals(r.status_code, 302)
+ new_liaison = LiaisonStatement.objects.get(id=liaison.id)
+ self.assertEquals(new_liaison.from_name, "from")
+ self.assertEquals(new_liaison.reply_to, "replyto@example.com")
+ self.assertEquals(new_liaison.to_name, "org")
+ self.assertEquals(new_liaison.to_contact, "to_poc@example.com")
+ self.assertEquals(new_liaison.response_contact, "responce_contact@example.com")
+ self.assertEquals(new_liaison.technical_contact, "technical_contact@example.com")
+ self.assertEquals(new_liaison.cc, "cc1@example.com")
+ self.assertEquals(new_liaison.purpose, LiaisonStatementPurposeName.objects.get(order=4))
+ self.assertEquals(new_liaison.deadline, liaison.deadline + datetime.timedelta(days=1)),
+ self.assertEquals(new_liaison.title, "title")
+ self.assertEquals(new_liaison.submitted.date(), (liaison.submitted + datetime.timedelta(days=1)).date())
+ self.assertEquals(new_liaison.body, "body")
+ self.assertTrue(new_liaison.modified > liaison.modified)
+
+ # test links and edit button
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
# the above tests only work with the new schema
diff --git a/ietf/liaisons/widgets.py b/ietf/liaisons/widgets.py
index d4fc31e3c..db5366eef 100644
--- a/ietf/liaisons/widgets.py
+++ b/ietf/liaisons/widgets.py
@@ -88,9 +88,8 @@ class RelatedLiaisonWidget(TextInput):
noliaison = 'inline'
deselect = 'none'
else:
- from ietf.liaisons.models import LiaisonDetail
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
- from ietf.liaisons.proxy import LiaisonDetail
+ from ietf.liaisons.proxy import LiaisonDetailProxy as LiaisonDetail
liaison = LiaisonDetail.objects.get(pk=value)
title = liaison.title
if not title:
diff --git a/ietf/utils/test_utils.py b/ietf/utils/test_utils.py
index b77ee9637..5336f6803 100644
--- a/ietf/utils/test_utils.py
+++ b/ietf/utils/test_utils.py
@@ -213,8 +213,9 @@ def canonicalize_sitemap(s):
def login_testing_unauthorized(tc, remote_user, url):
r = tc.client.get(url)
- tc.assertEquals(r.status_code, 302)
- tc.assertTrue("/accounts/login" in r['Location'])
+ tc.assertTrue(r.status_code in (302, 403))
+ if r.status_code == 302:
+ tc.assertTrue("/accounts/login" in r['Location'])
tc.client.login(remote_user=remote_user)
diff --git a/ietf/idrfc/fixtures/names.xml b/redesign/name/fixtures/names.xml
similarity index 69%
rename from ietf/idrfc/fixtures/names.xml
rename to redesign/name/fixtures/names.xml
index 904cc2171..3baf7ee5d 100644
--- a/ietf/idrfc/fixtures/names.xml
+++ b/redesign/name/fixtures/names.xml
@@ -36,45 +36,33 @@
1
0
-