From 1f60fbd484a3bdfe1ef569bb9eb10cf9cd9dc3a4 Mon Sep 17 00:00:00 2001 From: klmp200 Date: Thu, 22 Dec 2016 01:28:51 +0100 Subject: [PATCH] Uses election_detail for vote form --- core/management/commands/populate.py | 2 +- election/models.py | 2 +- .../templates/election/election_detail.jinja | 8 +++++ election/views.py | 29 ++++++++++--------- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/core/management/commands/populate.py b/core/management/commands/populate.py index 8a34b3c3..8a690eef 100644 --- a/core/management/commands/populate.py +++ b/core/management/commands/populate.py @@ -430,7 +430,7 @@ Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site. listeT.save() pres = Role(election=el, title="Président AE", description="Roi de l'AE") pres.save() - resp = Role(election=el, title="Co Respo Info", description="Ghetto++") + resp = Role(election=el, title="Co Respo Info", max_choice=2, description="Ghetto++") resp.save() cand = Candidature(role=resp, user=skia, election_list=liste, program="Refesons le site AE") cand.save() diff --git a/election/models.py b/election/models.py index c972363a..e042bba5 100644 --- a/election/models.py +++ b/election/models.py @@ -56,7 +56,7 @@ class Role(models.Model): max_choice = models.IntegerField(_('max choice'), default=1) def user_has_voted(self, user): - return not self.has_voted.filter(id=user.id).exists() + return self.has_voted.filter(id=user.id).exists() def __str__(self): return ("%s : %s") % (self.election.title, self.title) diff --git a/election/templates/election/election_detail.jinja b/election/templates/election/election_detail.jinja index 53cca0d4..a7c14050 100644 --- a/election/templates/election/election_detail.jinja +++ b/election/templates/election/election_detail.jinja @@ -239,7 +239,15 @@ th {
+ {% trans %}Add a new list{% endtrans %} + {% trans %}Add a new role{% endtrans %}
{{candidate_form}} {% csrf_token %} +

+
+
+ {{election_form.as_p()}} +

+ {% csrf_token %}
{% endblock %} \ No newline at end of file diff --git a/election/views.py b/election/views.py index ecba3a0d..03c6f958 100644 --- a/election/views.py +++ b/election/views.py @@ -59,7 +59,7 @@ class VoteForm(forms.Form): def __init__(self, election, user, *args, **kwargs): super(VoteForm, self).__init__(*args, **kwargs) for role in election.role.all(): - if role.user_has_voted(user): + if not role.user_has_voted(user): cand = role.candidature if role.max_choice > 1: self.fields[role.title] = VoteCheckbox(cand, role.max_choice, required=False) @@ -97,6 +97,7 @@ class ElectionDetailView(CanViewMixin, DetailView): """ Add additionnal data to the template """ kwargs = super(ElectionDetailView, self).get_context_data(**kwargs) kwargs['candidate_form'] = CandidateForm(self.get_object().id) + kwargs['election_form'] = VoteForm(self.get_object(), self.request.user) return kwargs @@ -149,11 +150,10 @@ class VoteFormView(CanCreateMixin, FormView): Alows users to vote """ form_class = VoteForm - template_name = 'election/vote_form.jinja' + template_name = 'election/election_detail.jinja' def dispatch(self, request, *arg, **kwargs): - self.election_id = kwargs['election_id'] - self.election = get_object_or_404(Election, pk=self.election_id) + self.election = get_object_or_404(Election, pk=kwargs['election_id']) return super(VoteFormView, self).dispatch(request, *arg, **kwargs) def vote(self, data): @@ -171,17 +171,24 @@ class VoteFormView(CanCreateMixin, FormView): """ data = form.clean() res = super(FormView, self).form_valid(form) - if self.request.user.is_root: - self.vote(data) - return res - for grp in data['role'].election.vote_groups.all(): + for grp in self.election.vote_groups.all(): if self.request.user.is_in_group(grp): self.vote(data) return res return res def get_success_url(self, **kwargs): - return reverse_lazy('election:detail', kwargs={'election_id': self.election_id}) + return reverse_lazy('election:detail', kwargs={'election_id': self.election.id}) + + def get_context_data(self, **kwargs): + """ Add additionnal data to the template """ + kwargs = super(VoteFormView, self).get_context_data(**kwargs) + kwargs['candidate_form'] = CandidateForm(self.election.id) + kwargs['object'] = self.election + kwargs['election'] = self.election + kwargs['election_form'] = self.get_form() + return kwargs + # Create views @@ -220,8 +227,6 @@ class RoleCreateView(CanCreateMixin, CreateView): """ obj = form.instance res = super(CreateView, self).form_valid - if self.request.user.is_root: - return res(form) if obj.election: for grp in obj.election.edit_groups.all(): if self.request.user.is_in_group(grp): @@ -245,8 +250,6 @@ class ElectionListCreateView(CanCreateMixin, CreateView): obj = form.instance res = super(CreateView, self).form_valid if obj.election: - if self.request.user.is_root: - return res(form) for grp in obj.election.candidature_groups.all(): if self.request.user.is_in_group(grp): return res(form)