Enregistre les votes pour des élections et des questions
This commit is contained in:
parent
1cafa2aedd
commit
c7e5d9ad6e
4 changed files with 62 additions and 2 deletions
21
elections/migrations/0007_election_voters.py
Normal file
21
elections/migrations/0007_election_voters.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Generated by Django 2.2.17 on 2020-12-24 00:18
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("elections", "0006_election_sent_mail"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="election",
|
||||
name="voters",
|
||||
field=models.ManyToManyField(
|
||||
related_name="cast_elections", to=settings.AUTH_USER_MODEL
|
||||
),
|
||||
),
|
||||
]
|
21
elections/migrations/0008_question_voters.py
Normal file
21
elections/migrations/0008_question_voters.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Generated by Django 2.2.17 on 2020-12-24 00:38
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("elections", "0007_election_voters"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="question",
|
||||
name="voters",
|
||||
field=models.ManyToManyField(
|
||||
related_name="cast_questions", to=settings.AUTH_USER_MODEL
|
||||
),
|
||||
),
|
||||
]
|
|
@ -32,9 +32,13 @@ class Election(models.Model):
|
|||
null=True,
|
||||
)
|
||||
|
||||
voters = models.ManyToManyField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
related_name="cast_elections",
|
||||
)
|
||||
|
||||
results_public = models.BooleanField(_("résultats publics"), default=False)
|
||||
tallied = models.BooleanField(_("dépouillée"), default=False)
|
||||
# TODO : cache tally or recompute it each time ?
|
||||
|
||||
archived = models.BooleanField(_("archivée"), default=False)
|
||||
|
||||
|
@ -58,6 +62,11 @@ class Question(models.Model):
|
|||
_("nombre maximal de votes reçus"), default=0
|
||||
)
|
||||
|
||||
voters = models.ManyToManyField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
related_name="cast_questions",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ["id"]
|
||||
|
||||
|
|
|
@ -335,7 +335,7 @@ class DelOptionView(CreatorOnlyEditMixin, BackgroundUpdateView):
|
|||
|
||||
|
||||
# #############################################################################
|
||||
# Common Views
|
||||
# Public Views
|
||||
# #############################################################################
|
||||
|
||||
|
||||
|
@ -364,6 +364,11 @@ class ElectionView(DetailView):
|
|||
)
|
||||
|
||||
|
||||
class ElectionVotersView(DetailView):
|
||||
model = Election
|
||||
template_name = "elections/election_voters.html"
|
||||
|
||||
|
||||
class VoteView(OpenElectionOnlyMixin, DetailView):
|
||||
model = Question
|
||||
template_name = "elections/vote.html"
|
||||
|
@ -405,6 +410,10 @@ class VoteView(OpenElectionOnlyMixin, DetailView):
|
|||
for v in vote_form:
|
||||
v.record_vote(self.request.user)
|
||||
|
||||
# On enregistre le vote pour la question et l'élection
|
||||
self.object.voters.add(self.request.user)
|
||||
self.object.election.voters.add(self.request.user)
|
||||
|
||||
messages.success(self.request, _("Votre choix a bien été enregistré !"))
|
||||
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
|
Loading…
Reference in a new issue