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()