From feb57a04f0d6fde6fc06f0d8db612210ef94859f Mon Sep 17 00:00:00 2001 From: Robert Sparks <rjsparks@nostrum.com> Date: Thu, 11 Sep 2014 20:41:59 +0000 Subject: [PATCH] Replaces the return_to_url notion with logic that uses the session object. Related to bug #1430. - Legacy-Id: 8305 --- ietf/doc/views_ballot.py | 20 +++++++------------- ietf/doc/views_doc.py | 2 ++ ietf/iesg/views.py | 2 ++ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ietf/doc/views_ballot.py b/ietf/doc/views_ballot.py index c347aedce..d449b6261 100644 --- a/ietf/doc/views_ballot.py +++ b/ietf/doc/views_ballot.py @@ -84,7 +84,6 @@ class EditPositionForm(forms.Form): position = forms.ModelChoiceField(queryset=BallotPositionName.objects.all(), widget=forms.RadioSelect, initial="norecord", required=True) discuss = forms.CharField(required=False, widget=forms.Textarea) comment = forms.CharField(required=False, widget=forms.Textarea) - return_to_url = forms.CharField(required=False, widget=forms.HiddenInput) def __init__(self, *args, **kwargs): ballot_type = kwargs.pop("ballot_type") @@ -106,8 +105,8 @@ def edit_position(request, name, ballot_id): ad = login = request.user.person - if 'HTTP_REFERER' in request.META: - return_to_url = request.META['HTTP_REFERER'] + if 'ballot_edit_return_point' in request.session: + return_to_url = request.session['ballot_edit_return_point'] else: return_to_url = urlreverse("doc_ballot", kwargs=dict(name=doc.name, ballot_id=ballot_id)) @@ -130,9 +129,6 @@ def edit_position(request, name, ballot_id): # save the vote clean = form.cleaned_data - if clean['return_to_url']: - return_to_url = clean['return_to_url'] - pos = BallotPositionDocEvent(doc=doc, by=login) pos.type = "changed_ballot_position" pos.ballot = ballot @@ -194,9 +190,9 @@ def edit_position(request, name, ballot_id): e.save() # save them after the position is saved to get later id for sorting order if request.POST.get("send_mail"): - qstr = "?return_to_url=%s" % return_to_url + qstr="" if request.GET.get('ad'): - qstr += "&ad=%s" % request.GET.get('ad') + qstr += "?ad=%s" % request.GET.get('ad') return HttpResponseRedirect(urlreverse("doc_send_ballot_comment", kwargs=dict(name=doc.name, ballot_id=ballot_id)) + qstr) elif request.POST.get("Defer"): return redirect("doc_defer_ballot", name=doc) @@ -211,9 +207,6 @@ def edit_position(request, name, ballot_id): initial['discuss'] = old_pos.discuss initial['comment'] = old_pos.comment - if return_to_url: - initial['return_to_url'] = return_to_url - form = EditPositionForm(initial=initial, ballot_type=ballot.ballot_type) blocking_positions = dict((p.pk, p.name) for p in form.fields["position"].queryset.all() if p.blocking) @@ -242,8 +235,9 @@ def send_ballot_comment(request, name, ballot_id): ad = request.user.person - return_to_url = request.GET.get('return_to_url') - if not return_to_url: + if 'ballot_edit_return_point' in request.session: + return_to_url = request.session['ballot_edit_return_point'] + else: return_to_url = urlreverse("doc_ballot", kwargs=dict(name=doc.name, ballot_id=ballot_id)) if 'HTTP_REFERER' in request.META: diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index f596ea687..8c33b0fca 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -755,6 +755,8 @@ def document_ballot(request, name, ballot_id=None): c = document_ballot_content(request, doc, ballot_id, editable=True) + request.session['ballot_edit_return_point'] = request.path_info + return render_to_response("doc/document_ballot.html", dict(doc=doc, top=top, diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index fbc2bd57a..cd7b155d0 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -179,6 +179,7 @@ def agenda(request, date=None): data["sections"]["1.1"]["title"] = data["sections"]["1.1"]["title"].replace("Roll Call", '<a href="https://www.ietf.org/iesg/internal/rollcall.txt">Roll Call</a>') data["sections"]["1.3"]["title"] = data["sections"]["1.3"]["title"].replace("Minutes", '<a href="https://www.ietf.org/iesg/internal/minutes.txt">Minutes</a>') + request.session['ballot_edit_return_point'] = request.path_info return render_to_response("iesg/agenda.html", { "date": data["date"], "sections": sorted(data["sections"].iteritems()), @@ -366,6 +367,7 @@ def agenda_documents(request): "sections": sorted((num, section) for num, section in sections.iteritems() if "2" <= num < "5") }) + request.session['ballot_edit_return_point'] = request.path_info return render(request, 'iesg/agenda_documents.html', { 'telechats': telechats }) def telechat_docs_tarfile(request, date):