Ticket #673: Add the ability for the secretariat to clear a ballot to the tracker
- Legacy-Id: 5525
This commit is contained in:
parent
d8c765e72c
commit
4da4efca7b
|
@ -46,6 +46,36 @@ BALLOT_CHOICES = (("yes", "Yes"),
|
|||
("", "No Record"),
|
||||
)
|
||||
|
||||
# -------------------------------------------------
|
||||
# Helper Functions
|
||||
# -------------------------------------------------
|
||||
def do_undefer_ballot(request, doc):
|
||||
'''
|
||||
Helper function to perform undefer of ballot. Takes the Request object, for use in
|
||||
logging, and the Document object.
|
||||
'''
|
||||
login = request.user.get_profile()
|
||||
telechat_date = TelechatDates.objects.all()[0].date1
|
||||
save_document_in_history(doc)
|
||||
|
||||
prev_state = doc.friendly_state()
|
||||
if doc.type_id == 'draft':
|
||||
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='iesg-eva'))
|
||||
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
|
||||
prev_tag = prev_tag[0] if prev_tag else None
|
||||
if prev_tag:
|
||||
doc.tags.remove(prev_tag)
|
||||
elif doc.type_id == 'conflrev':
|
||||
doc.set_state(State.objects.get(used=True, type='conflrev',slug='iesgeval'))
|
||||
|
||||
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
|
||||
|
||||
doc.time = e.time
|
||||
doc.save()
|
||||
|
||||
update_telechat(request, doc, login, telechat_date)
|
||||
email_state_changed(request, doc, e.desc)
|
||||
|
||||
def position_to_ballot_choice(position):
|
||||
for v, label in BALLOT_CHOICES:
|
||||
if v and getattr(position, v):
|
||||
|
@ -70,6 +100,7 @@ def get_ballot_info(ballot, area_director):
|
|||
class EditPositionForm(forms.Form):
|
||||
pass
|
||||
|
||||
# -------------------------------------------------
|
||||
@group_required('Area_Director','Secretariat')
|
||||
def edit_position(request, name):
|
||||
pass
|
||||
|
@ -392,6 +423,8 @@ def clear_ballot(request, name):
|
|||
for t in BallotType.objects.filter(doc_type=doc.type_id):
|
||||
close_ballot(doc, by, t.slug)
|
||||
create_ballot_if_not_open(doc, by, t.slug)
|
||||
if doc.get_state('draft-iesg').slug == 'defer':
|
||||
do_undefer_ballot(request,doc)
|
||||
return HttpResponseRedirect(urlreverse("doc_view", kwargs=dict(name=doc.name)))
|
||||
|
||||
return render_to_response('idrfc/clear_ballot.html',
|
||||
|
@ -462,30 +495,10 @@ def undefer_ballotREDESIGN(request, name):
|
|||
if doc.type_id == 'draft' and not doc.get_state("draft-iesg"):
|
||||
raise Http404()
|
||||
|
||||
login = request.user.get_profile()
|
||||
telechat_date = TelechatDates.objects.all()[0].date1
|
||||
|
||||
if request.method == 'POST':
|
||||
save_document_in_history(doc)
|
||||
|
||||
prev_state = doc.friendly_state()
|
||||
if doc.type_id == 'draft':
|
||||
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='iesg-eva'))
|
||||
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
|
||||
prev_tag = prev_tag[0] if prev_tag else None
|
||||
if prev_tag:
|
||||
doc.tags.remove(prev_tag)
|
||||
elif doc.type_id == 'conflrev':
|
||||
doc.set_state(State.objects.get(used=True, type='conflrev',slug='iesgeval'))
|
||||
|
||||
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
|
||||
|
||||
doc.time = e.time
|
||||
doc.save()
|
||||
|
||||
update_telechat(request, doc, login, telechat_date)
|
||||
email_state_changed(request, doc, e.desc)
|
||||
|
||||
do_undefer_ballot(request,doc)
|
||||
return HttpResponseRedirect(doc.get_absolute_url())
|
||||
|
||||
return render_to_response('idrfc/undefer_ballot.html',
|
||||
|
@ -497,7 +510,6 @@ def undefer_ballotREDESIGN(request, name):
|
|||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
undefer_ballot = undefer_ballotREDESIGN
|
||||
|
||||
|
||||
class LastCallTextForm(forms.ModelForm):
|
||||
def clean_last_call_text(self):
|
||||
lines = self.cleaned_data["last_call_text"].split("\r\n")
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<p>This will clear all ballot positions and discuss entries.</p>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<a href="{{ back_url }}ballot/">Back</a>
|
||||
<input type="submit" value="Clear ballot"/>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -10,10 +10,13 @@
|
|||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
|
||||
<div class="action">
|
||||
{% if deferred %}
|
||||
<a href="{% url doc_undefer_ballot name=doc.name %}">Undefer ballot</a>
|
||||
<div><a href="{% url doc_undefer_ballot name=doc.name %}">Undefer ballot</a></div>
|
||||
<div>Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</div>
|
||||
{% else %}
|
||||
<a href="{% url doc_defer_ballot name=doc.name %}">Defer ballot</a>
|
||||
<div><a href="{% url doc_defer_ballot name=doc.name %}">Defer ballot</a></div>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<div><a href="{% url doc_clear_ballot name=doc.name %}">Clear ballot</a></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
Loading…
Reference in a new issue