Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion car/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ def before_request():
if session.get("phonebank"):
g.phonebank = True

if request.endpoint in {"show_turf", "show_voter"} and not request.args.get(
"keep_previous"
):
session["previous_voter"] = None

c = session.get("canvasser")
if c:
g.canvasser = c
Expand Down Expand Up @@ -781,9 +786,10 @@ def phonebank_next_voter(turf_id):
if not is_phone(voter.bestphone):
continue

session["previous_voter"] = session.get("chosen_voter")
session["chosen_voter"] = voter_id
cache.set(f"last_seen_{voter_id}", time.time())
return redirect(url_for("show_voter", id=voter_id))
return redirect(url_for("show_voter", id=voter_id, keep_previous=1))

flash("No voters to contact in this phonebank.")
if not session["admin"] and len(session["turfs"]) == 1:
Expand All @@ -793,6 +799,15 @@ def phonebank_next_voter(turf_id):
return redirect(url_for("index"))


@app.route("/previous/")
def phonebank_previous_voter():
if not (previous_voter := session.get("previous_voter")):
abort(404)
# pretend that the current voter was the previously "chosen voter" so back behavior works as expected
session["chosen_voter"] = previous_voter
return redirect(url_for("show_voter", id=previous_voter))


@app.route("/pair_phone/")
def pair_phone_generate_code():
session["return_to"] = request.args.get("return", "/")
Expand Down
3 changes: 3 additions & 0 deletions car/templates/voter.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ <h2>📋️ Contact</h2>
{% if g.phonebank %}
<div class="desktop-column">
<a href="{{ url_for('phonebank_next_voter', turf_id=session.phonebank_turf) }}"><button>next voter</button></a>
{% if session.previous_voter is not none and session.previous_voter != voter.id %}
<a href="{{ url_for('phonebank_previous_voter') }}"><button>previous voter</button></a>
{% endif %}
</div>
{% endif %}
</div>
Expand Down
Loading