diff --git a/election/models.py b/election/models.py
index 00ca2f46..642129c3 100644
--- a/election/models.py
+++ b/election/models.py
@@ -31,6 +31,10 @@ class Election(models.Model):
now = timezone.now()
return bool(now <= self.end_date and now >= self.start_date)
+ @property
+ def is_vote_finished(self):
+ return bool(timezone.now() > self.end_date)
+
@property
def is_candidature_active(self):
now = timezone.now()
diff --git a/election/templates/election/election_detail.jinja b/election/templates/election/election_detail.jinja
index c5e5fbfd..2f9f1256 100644
--- a/election/templates/election/election_detail.jinja
+++ b/election/templates/election/election_detail.jinja
@@ -235,6 +235,8 @@ th {
{%- if election.is_vote_active %}
{% trans %}Polls close {% endtrans %}
+ {%- elif election.is_vote_finished %}
+ {% trans %}Polls closed {% endtrans %}
{%- else %}
{% trans %}Polls will open {% endtrans %}
at
@@ -290,7 +292,7 @@ th {
{%- set _ = count.append(count.pop() + 1) %}
{%- endif %}
- {%- if election.has_voted(user) or not election.is_vote_active %}
+ {%- if not election.is_vote_finished %}
{%- set results = election_results[role.title]['blank vote'] %}
{{results.vote}} {% trans %}votes{% endtrans %} ( {{results.percent}} %)
@@ -319,7 +321,8 @@ th {
{% trans %}Choose{% endtrans %} {{ candidature.user.nick_name or candidature.user.first_name }}
{%- set _ = count.append(count.pop() + 1) %}
- {%- else %}
+ {%- endif %}
+ {%- if not election.is_vote_finished %}
{%- set results = election_results[role.title][candidature.user.username] %}
{{results.vote}} {% trans %}votes{% endtrans %} ( {{results.percent}} %)
diff --git a/election/views.py b/election/views.py
index 143ba56c..65bf437e 100644
--- a/election/views.py
+++ b/election/views.py
@@ -182,19 +182,21 @@ class VoteFormView(CanCreateMixin, FormView):
self.election = get_object_or_404(Election, pk=kwargs['election_id'])
return super(VoteFormView, self).dispatch(request, *arg, **kwargs)
- def vote(self, data):
- for key in data.keys():
- if isinstance(data[key], QuerySet):
- if data[key].count() > 0:
- vote = Vote(role=data[key].first().role)
+ def vote(self, election_data):
+ for role_title in election_data.keys():
+ # If we have a multiple choice field
+ if isinstance(election_data[role_title], QuerySet):
+ if election_data[role_title].count() > 0:
+ vote = Vote(role=election_data[role_title].first().role)
vote.save()
- for el in data[key]:
+ for el in election_data[role_title]:
vote.candidature.add(el)
- elif data[key] is not None:
- vote = Vote(role=data[key].role)
+ # If we have a single choice
+ elif election_data[role_title] is not None:
+ vote = Vote(role=election_data[role_title].role)
vote.save()
- vote.candidature.add(data[key])
- self.election.role.get(title=key).has_voted.add(self.request.user)
+ vote.candidature.add(election_data[role_title])
+ self.election.role.get(title=role_title).has_voted.add(self.request.user)
def get_form_kwargs(self):
kwargs = super(VoteFormView, self).get_form_kwargs()