Updated polls/models to include a field for storing the ballot selected by the user on the front end. A few bugs have been fixed on the event voting page and new functionality has been added which allows a voter to restart the voting process.

This commit is contained in:
vince0656 2018-08-22 17:39:41 +01:00
parent bab4aa29cf
commit 572600408c
5 changed files with 81 additions and 26 deletions

View file

@ -205,6 +205,7 @@ class PartialBallotDecryption(models.Model):
class Ballot(models.Model):
voter = models.ForeignKey(EmailUser, on_delete=models.CASCADE, related_name="ballots")
poll = models.ForeignKey(Poll, on_delete=models.CASCADE, related_name="ballots")
selection = models.CharField(max_length=1)
cast = models.BooleanField(default=False)

View file

@ -45,6 +45,9 @@ class EventDetailView(generic.DetailView):
for poll in polls:
result_json = poll.result_json
if result_json is None:
continue
if result_json[len(result_json)-1] == ',':
result_json = result_json[0:len(result_json)-1]
@ -173,6 +176,7 @@ def event_vote(request, event_id, poll_id):
if request.method == "POST":
data = json.loads(request.POST.lists()[0][0])
selection = data['selection']
ballot_json = data['ballot']
encrypted_votes_json = ballot_json['encryptedVotes']
@ -191,6 +195,7 @@ def event_vote(request, event_id, poll_id):
cipher_text_c2=fragment['C2'])
ballot.cast = True
ballot.selection = selection
ballot.save()
combine_encrypted_votes.delay(email_key[0].user, poll)