Skip to content
Snippets Groups Projects
Commit 7baef125 authored by Ben Adida's avatar Ben Adida
Browse files

added better error reporting for missing uploaded voter file

parent 7d00d841
No related branches found
No related tags found
No related merge requests found
...@@ -5,14 +5,23 @@ ...@@ -5,14 +5,23 @@
<form method="post" action="" id="upload_form" enctype="multipart/form-data"> <form method="post" action="" id="upload_form" enctype="multipart/form-data">
<p> <p>
If your election allows for password-based voters, then you can bulk upload them here.<br /> If you would like to specify your list of voters by name and email address,<br />
Please enter CSV content for your list of voters as follows: you can bulk upload a list of such voters here.<br /><br />
Please prepare a text file of comma-separated values, as follows:
</p> </p>
<pre> <pre>
benadida,ben@adida.net,Ben Adida benadida,ben@adida.net,Ben Adida
bob,bob@acme.org,Bob Acme bob,bob@acme.org,Bob Acme
... ...
</pre> </pre>
<p>
The easiest way to prepare such a file is to use a spreadsheet program and to export as "CSV".
</p>
{% if error %}
<div style="color: red;">{{error}}</div>
{% endif %}
<input type="hidden" name="csrf_token" value="{{csrf_token}}" /> <input type="hidden" name="csrf_token" value="{{csrf_token}}" />
<input type="file" name="voters_file" /> <input type="file" name="voters_file" />
......
...@@ -1142,7 +1142,7 @@ def voters_upload(request, election): ...@@ -1142,7 +1142,7 @@ def voters_upload(request, election):
# raise PermissionDenied() # raise PermissionDenied()
if request.method == "GET": if request.method == "GET":
return render_template(request, 'voters_upload', {'election': election}) return render_template(request, 'voters_upload', {'election': election, 'error': request.GET.get('e',None)})
if request.method == "POST": if request.method == "POST":
if bool(request.POST.get('confirm_p', 0)): if bool(request.POST.get('confirm_p', 0)):
...@@ -1153,6 +1153,7 @@ def voters_upload(request, election): ...@@ -1153,6 +1153,7 @@ def voters_upload(request, election):
return HttpResponseRedirect(reverse(voters_list_pretty, args=[election.uuid])) return HttpResponseRedirect(reverse(voters_list_pretty, args=[election.uuid]))
else: else:
# we need to confirm # we need to confirm
if request.FILES.has_key('voters_file'):
voters_file = request.FILES['voters_file'] voters_file = request.FILES['voters_file']
voter_file_obj = election.add_voters_file(voters_file) voter_file_obj = election.add_voters_file(voters_file)
...@@ -1162,6 +1163,8 @@ def voters_upload(request, election): ...@@ -1162,6 +1163,8 @@ def voters_upload(request, election):
voters = [v for v in voter_file_obj.itervoters()][:5] voters = [v for v in voter_file_obj.itervoters()][:5]
return render_template(request, 'voters_upload_confirm', {'election': election, 'voters': voters}) return render_template(request, 'voters_upload_confirm', {'election': election, 'voters': voters})
else:
return HttpResponseRedirect("%s?%s" % (reverse(voters_upload, args=[election.uuid]), urllib.urlencode({'e':'no voter file specified, try again'})))
@election_admin() @election_admin()
def voters_upload_cancel(request, election): def voters_upload_cancel(request, election):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment