Skip to content

Commit 5ff6e28

Browse files
committed
Merged [5525] from rcross@amsl.com:
Ticket ietf-tools#673: Add the ability for the secretariat to clear a ballot to the tracker - Legacy-Id: 5541 Note: SVN reference [5525] has been migrated to Git commit 4da4efc
2 parents c0e520b + 4da4efc commit 5ff6e28

3 files changed

Lines changed: 40 additions & 25 deletions

File tree

ietf/idrfc/views_ballot.py

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,36 @@
4646
("", "No Record"),
4747
)
4848

49+
# -------------------------------------------------
50+
# Helper Functions
51+
# -------------------------------------------------
52+
def do_undefer_ballot(request, doc):
53+
'''
54+
Helper function to perform undefer of ballot. Takes the Request object, for use in
55+
logging, and the Document object.
56+
'''
57+
login = request.user.get_profile()
58+
telechat_date = TelechatDates.objects.all()[0].date1
59+
save_document_in_history(doc)
60+
61+
prev_state = doc.friendly_state()
62+
if doc.type_id == 'draft':
63+
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='iesg-eva'))
64+
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
65+
prev_tag = prev_tag[0] if prev_tag else None
66+
if prev_tag:
67+
doc.tags.remove(prev_tag)
68+
elif doc.type_id == 'conflrev':
69+
doc.set_state(State.objects.get(used=True, type='conflrev',slug='iesgeval'))
70+
71+
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
72+
73+
doc.time = e.time
74+
doc.save()
75+
76+
update_telechat(request, doc, login, telechat_date)
77+
email_state_changed(request, doc, e.desc)
78+
4979
def position_to_ballot_choice(position):
5080
for v, label in BALLOT_CHOICES:
5181
if v and getattr(position, v):
@@ -70,6 +100,7 @@ def get_ballot_info(ballot, area_director):
70100
class EditPositionForm(forms.Form):
71101
pass
72102

103+
# -------------------------------------------------
73104
@group_required('Area_Director','Secretariat')
74105
def edit_position(request, name):
75106
pass
@@ -392,6 +423,8 @@ def clear_ballot(request, name):
392423
for t in BallotType.objects.filter(doc_type=doc.type_id):
393424
close_ballot(doc, by, t.slug)
394425
create_ballot_if_not_open(doc, by, t.slug)
426+
if doc.get_state('draft-iesg').slug == 'defer':
427+
do_undefer_ballot(request,doc)
395428
return HttpResponseRedirect(urlreverse("doc_view", kwargs=dict(name=doc.name)))
396429

397430
return render_to_response('idrfc/clear_ballot.html',
@@ -462,30 +495,10 @@ def undefer_ballotREDESIGN(request, name):
462495
if doc.type_id == 'draft' and not doc.get_state("draft-iesg"):
463496
raise Http404()
464497

465-
login = request.user.get_profile()
466498
telechat_date = TelechatDates.objects.all()[0].date1
467499

468500
if request.method == 'POST':
469-
save_document_in_history(doc)
470-
471-
prev_state = doc.friendly_state()
472-
if doc.type_id == 'draft':
473-
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='iesg-eva'))
474-
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
475-
prev_tag = prev_tag[0] if prev_tag else None
476-
if prev_tag:
477-
doc.tags.remove(prev_tag)
478-
elif doc.type_id == 'conflrev':
479-
doc.set_state(State.objects.get(used=True, type='conflrev',slug='iesgeval'))
480-
481-
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
482-
483-
doc.time = e.time
484-
doc.save()
485-
486-
update_telechat(request, doc, login, telechat_date)
487-
email_state_changed(request, doc, e.desc)
488-
501+
do_undefer_ballot(request,doc)
489502
return HttpResponseRedirect(doc.get_absolute_url())
490503

491504
return render_to_response('idrfc/undefer_ballot.html',
@@ -497,7 +510,6 @@ def undefer_ballotREDESIGN(request, name):
497510
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
498511
undefer_ballot = undefer_ballotREDESIGN
499512

500-
501513
class LastCallTextForm(forms.ModelForm):
502514
def clean_last_call_text(self):
503515
lines = self.cleaned_data["last_call_text"].split("\r\n")

ietf/templates/idrfc/clear_ballot.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>Clear ballot for {{ doc }}</h1>
1111
<p>This will clear all ballot positions and discuss entries.</p>
1212

1313
<div class="actions">
14-
<a href="{{ back_url }}">Back</a>
14+
<a href="{{ back_url }}ballot/">Back</a>
1515
<input type="submit" value="Clear ballot"/>
1616
</div>
1717
</form>

ietf/templates/idrfc/document_ballot_content.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@
1010
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
1111
<div class="action">
1212
{% if deferred %}
13-
<a href="{% url doc_undefer_ballot name=doc.name %}">Undefer ballot</a>
13+
<div><a href="{% url doc_undefer_ballot name=doc.name %}">Undefer ballot</a></div>
1414
<div>Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</div>
1515
{% else %}
16-
<a href="{% url doc_defer_ballot name=doc.name %}">Defer ballot</a>
16+
<div><a href="{% url doc_defer_ballot name=doc.name %}">Defer ballot</a></div>
17+
{% endif %}
18+
{% if user|has_role:"Secretariat" %}
19+
<div><a href="{% url doc_clear_ballot name=doc.name %}">Clear ballot</a></div>
1720
{% endif %}
1821
</div>
1922
{% endif %}

0 commit comments

Comments
 (0)