Skip to content

Commit fc98641

Browse files
Allow pre-ADs to be assigned as responsible for document. Fixes ietf-tools#3229. Commit ready for merge.
- Legacy-Id: 19383
1 parent 58fa321 commit fc98641

2 files changed

Lines changed: 34 additions & 2 deletions

File tree

ietf/doc/tests_draft.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,30 @@ def test_doc_change_ad(self):
10631063
doc = Document.objects.get(name=self.docname)
10641064
self.assertEqual(doc.ad, None)
10651065

1066+
def test_doc_change_ad_allows_pre_ad(self):
1067+
"""Pre-ADs can be responsible for documents"""
1068+
# create a pre-AD
1069+
doc = Document.objects.get(name=self.docname)
1070+
pre_ad = RoleFactory(name_id='pre-ad', group=doc.group.parent).person
1071+
1072+
url = urlreverse('ietf.doc.views_draft.edit_ad', kwargs=dict(name=self.docname))
1073+
self.client.login(username='secretary', password='secretary+password')
1074+
1075+
# test get
1076+
r = self.client.get(url)
1077+
self.assertEqual(r.status_code, 200)
1078+
q = PyQuery(r.content)
1079+
self.assertEqual(
1080+
len(q(f'form select[name=ad] option[value="{pre_ad.pk}"]')), 1,
1081+
'Pre-AD should be an option for assignment',
1082+
)
1083+
1084+
# test post
1085+
r = self.client.post(url, dict(ad=str(pre_ad.pk)))
1086+
self.assertEqual(r.status_code, 302)
1087+
doc = Document.objects.get(pk=doc.pk) # refresh
1088+
self.assertEqual(doc.ad, pre_ad, 'Pre-AD was not actually assigned')
1089+
10661090
def test_doc_change_shepherd(self):
10671091
doc = Document.objects.get(name=self.docname)
10681092
doc.shepherd = None

ietf/doc/views_draft.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,8 +1111,16 @@ def change_shepherd_email(request, name):
11111111
})
11121112

11131113
class AdForm(forms.Form):
1114-
ad = forms.ModelChoiceField(Person.objects.filter(role__name="ad", role__group__state="active", role__group__type="area").order_by('name'),
1115-
label="Shepherding AD", empty_label="(None)", required=False)
1114+
ad = forms.ModelChoiceField(
1115+
Person.objects.filter(
1116+
role__name__in=("ad", "pre-ad"),
1117+
role__group__state="active",
1118+
role__group__type="area",
1119+
).order_by('name'),
1120+
label="Shepherding AD",
1121+
empty_label="(None)",
1122+
required=False,
1123+
)
11161124

11171125
def __init__(self, doc, *args, **kwargs):
11181126
super(self.__class__, self).__init__(*args, **kwargs)

0 commit comments

Comments
 (0)