Skip to content

Commit 7367b95

Browse files
committed
Extend edit_info view to handle adding an IDInternal, refactor a bit to cut down on boiler-plate code in the state diff
- Legacy-Id: 2289
1 parent 1330c2c commit 7367b95

9 files changed

Lines changed: 276 additions & 79 deletions

File tree

branch/iesg-tracker/ietf/idrfc/fixtures/draft.xml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,81 @@ provided.</field>
184184
<field to="idtracker.iesglogin" name="resurrect_requested_by" rel="ManyToOneRel"><None></None></field>
185185
<field type="IntegerField" name="approved_in_minute">1</field>
186186
</object>
187+
<object pk="19892" model="idtracker.internetdraft">
188+
<field type="CharField" name="title">Uniform Resource Name (URN) Syntax</field>
189+
<field type="CharField" name="id_document_key">UNIFORM RESOURCE NAME (URN) SYNTAX</field>
190+
<field to="idtracker.acronym" name="group" rel="ManyToOneRel">1027</field>
191+
<field type="CharField" name="filename">draft-ah-rfc2141bis-urn</field>
192+
<field type="CharField" name="revision">00</field>
193+
<field type="DateField" name="revision_date">2010-03-25</field>
194+
<field type="CharField" name="file_type">.txt</field>
195+
<field type="IntegerField" name="txt_page_count">18</field>
196+
<field type="CharField" name="local_path"><None></None></field>
197+
<field type="DateField" name="start_date">2010-03-25</field>
198+
<field type="DateField" name="expiration_date"><None></None></field>
199+
<field type="TextField" name="abstract">Uniform Resource Names (URNs) are intended to serve as persistent,
200+
location-independent, resource identifiers. This document serves as
201+
the foundation of the 'urn' URI Scheme according to RFC 3986 and sets
202+
forward the canonical syntax for URNs, which subdivides URNs into
203+
"namespaces". A discussion of both existing legacy and new
204+
namespaces and requirements for URN presentation and transmission are
205+
presented. Finally, there is a discussion of URN equivalence and how
206+
to determine it. This document supersedes RFC 2141.
207+
208+
The requirements and procedures for URN Namespace registration
209+
documents are currently set forth in RFC 3406, which is also expected
210+
to be updated by an independent, revised specification soon.
211+
212+
Discussion
213+
214+
This draft version has been obtained by importing the text from RFC
215+
2141 into modern tools and making a first round of updating steps.
216+
It is intended to serve as one of the starting points for an effort
217+
to bring URN RFCs in alignment with STD 63, STD 68, BCP 26, and the
218+
requirements from emerging distributed national and international URN
219+
resolution systems, and advance them on the IETF Standards Track.
220+
221+
Until a more specific mailing list is established, comments are
222+
welcome on the uri-review@ietf.org mailing list (or sent to the
223+
document editor).</field>
224+
<field type="DateField" name="dunn_sent_date"><None></None></field>
225+
<field type="DateField" name="extension_date"><None></None></field>
226+
<field to="idtracker.idstatus" name="status" rel="ManyToOneRel">1</field>
227+
<field to="idtracker.idintendedstatus" name="intended_status" rel="ManyToOneRel">8</field>
228+
<field type="DateField" name="lc_sent_date"><None></None></field>
229+
<field type="CharField" name="lc_changes"><None></None></field>
230+
<field type="DateField" name="lc_expiration_date"><None></None></field>
231+
<field type="DateField" name="b_sent_date"><None></None></field>
232+
<field type="DateField" name="b_discussion_date"><None></None></field>
233+
<field type="DateField" name="b_approve_date"><None></None></field>
234+
<field type="DateField" name="wgreturn_date"><None></None></field>
235+
<field type="IntegerField" name="rfc_number"><None></None></field>
236+
<field type="TextField" name="comments"><None></None></field>
237+
<field type="DateField" name="last_modified_date">2010-03-25</field>
238+
<field to="idtracker.internetdraft" name="replaced_by" rel="ManyToOneRel"><None></None></field>
239+
<field type="BooleanField" name="review_by_rfc_editor">0</field>
240+
<field type="BooleanField" name="expired_tombstone">0</field>
241+
</object>
242+
<object pk="1027" model="idtracker.acronym">
243+
<field type="CharField" name="acronym">none</field>
244+
<field type="CharField" name="name">Individual Submissions</field>
245+
<field type="CharField" name="name_key">INDIVIDUAL SUBMISSIONS</field>
246+
</object>
247+
<object pk="1027" model="idtracker.ietfwg">
248+
<field to="idtracker.wgtype" name="group_type" rel="ManyToOneRel">4</field>
249+
<field type="DateField" name="proposed_date"><None></None></field>
250+
<field type="DateField" name="start_date"><None></None></field>
251+
<field type="DateField" name="dormant_date"><None></None></field>
252+
<field type="DateField" name="concluded_date"><None></None></field>
253+
<field to="idtracker.wgstatus" name="status" rel="ManyToOneRel">1</field>
254+
<field to="idtracker.areadirector" name="area_director" rel="ManyToOneRel">112</field>
255+
<field type="CharField" name="meeting_scheduled">NO</field>
256+
<field type="CharField" name="email_address"></field>
257+
<field type="CharField" name="email_subscribe"></field>
258+
<field type="CharField" name="email_keyword"></field>
259+
<field type="CharField" name="email_archive"></field>
260+
<field type="TextField" name="comments">This is here so that 'none' can be entered in, for example, idform.</field>
261+
<field type="DateField" name="last_modified_date">2002-06-24</field>
262+
<field type="CharField" name="meeting_scheduled_old">NO</field>
263+
</object>
187264
</django-objects>

branch/iesg-tracker/ietf/idrfc/generate_fixtures.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def output(name, qs):
5959
draftdata.extend([a.area.area_acronym for a in ags])
6060
d = InternetDraft.objects.get(filename="draft-ietf-mip6-cn-ipsec")
6161
draftdata.extend([d, d.idinternal])
62+
d = InternetDraft.objects.get(filename="draft-ah-rfc2141bis-urn")
63+
draftdata.extend([d, d.group, d.group.ietfwg])
6264
output("draft", draftdata)
6365

6466
# specific ballot info

branch/iesg-tracker/ietf/idrfc/tests.py

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,12 @@ def test_edit_info(self):
164164
draft.group = Acronym.objects.get(acronym_id=Acronym.INDIVIDUAL_SUBMITTER)
165165
draft.save()
166166
new_job_owner = IESGLogin.objects.exclude(id__in=[IESGLogin.objects.get(login_name="klm").id, draft.idinternal.job_owner_id])[0]
167-
new_group = Acronym.objects.filter(area__status=Area.ACTIVE)[0]
167+
new_area = Area.active_areas()[0]
168168

169169
r = self.client.post(url,
170170
dict(intended_status=str(draft.intended_status_id),
171171
status_date=str(date.today() + timedelta(2)),
172-
group=str(new_group.acronym_id),
172+
area_acronym=str(new_area.area_acronym_id),
173173
via_rfc_editor="1",
174174
job_owner=new_job_owner.id,
175175
state_change_notice_to="test@example.com",
@@ -179,7 +179,7 @@ def test_edit_info(self):
179179
self.assertEquals(r.status_code, 302)
180180

181181
draft = InternetDraft.objects.get(filename="draft-ietf-mipshop-pfmipv6")
182-
self.assertEquals(draft.group, new_group)
182+
self.assertEquals(draft.idinternal.area_acronym, new_area)
183183
self.assertTrue(draft.idinternal.via_rfc_editor)
184184
self.assertEquals(draft.idinternal.job_owner, new_job_owner)
185185
self.assertEquals(draft.idinternal.note, "")
@@ -188,6 +188,47 @@ def test_edit_info(self):
188188
self.assertEquals(len(mail_outbox), mailbox_before + 1)
189189
self.assertTrue(draft.filename in mail_outbox[-1]['Subject'])
190190

191+
def test_add_draft(self):
192+
draft = InternetDraft.objects.get(filename="draft-ah-rfc2141bis-urn")
193+
url = urlreverse('doc_edit_info', kwargs=dict(name=draft.filename))
194+
login_testing_unauthorized(self, "klm", url)
195+
196+
# normal get
197+
r = self.client.get(url)
198+
self.assertEquals(r.status_code, 200)
199+
q = PyQuery(r.content)
200+
self.assertEquals(len(q('form select[name=intended_status]')), 1)
201+
self.assertEquals(len(q('form input[name=via_rfc_editor]')), 1)
202+
self.assertTrue('@' in q('form input[name=state_change_notice_to]')[0].get('value'))
203+
204+
# add
205+
mailbox_before = len(mail_outbox)
206+
207+
job_owner = IESGLogin.objects.filter(user_level=1)[0]
208+
area = Area.active_areas()[0]
209+
210+
r = self.client.post(url,
211+
dict(intended_status=str(draft.intended_status_id),
212+
status_date=str(date.today() + timedelta(2)),
213+
area_acronym=str(area.area_acronym_id),
214+
via_rfc_editor="1",
215+
job_owner=job_owner.id,
216+
state_change_notice_to="test@example.com",
217+
note="This is a note",
218+
telechat_date="",
219+
))
220+
self.assertEquals(r.status_code, 302)
221+
222+
draft = InternetDraft.objects.get(filename="draft-ah-rfc2141bis-urn")
223+
self.assertEquals(draft.idinternal.area_acronym, area)
224+
self.assertTrue(draft.idinternal.via_rfc_editor)
225+
self.assertEquals(draft.idinternal.job_owner, job_owner)
226+
self.assertEquals(draft.idinternal.note, "This is a note")
227+
self.assertTrue(not draft.idinternal.agenda)
228+
self.assertEquals(draft.idinternal.comments().count(), 3)
229+
self.assertTrue("Draft added" in draft.idinternal.comments()[0].comment_text)
230+
self.assertEquals(len(mail_outbox), mailbox_before)
231+
191232

192233
class RequestResurrectTestCase(django.test.TestCase):
193234
fixtures = ['base', 'draft']

branch/iesg-tracker/ietf/idrfc/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def generate_ballot(request, doc):
2828
doc.idinternal.ballot = ballot
2929
return ballot
3030

31-
def make_last_call(request, doc):
31+
def request_last_call(request, doc):
3232
try:
3333
ballot = doc.idinternal.ballot
3434
except BallotInfo.DoesNotExist:

branch/iesg-tracker/ietf/idrfc/views_ballot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ def prepare_last_call(request, name):
326326

327327
change = log_state_changed(request, doc, login)
328328
email_owner(request, doc, doc.idinternal.job_owner, login, change)
329-
make_last_call(request, doc)
329+
requiest_last_call(request, doc)
330330

331331
return render_to_response('idrfc/last_call_requested.html',
332332
dict(doc=doc),

0 commit comments

Comments
 (0)