Pep8 for elections

This commit is contained in:
2017-06-07 16:22:04 +02:00
parent 969d5699fa
commit d3fbc65cdc
4 changed files with 186 additions and 102 deletions

View File

@ -1,9 +1,7 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
from django.conf import settings
from datetime import timedelta
from core.models import User, Group
@ -13,16 +11,26 @@ class Election(models.Model):
"""
title = models.CharField(_('title'), max_length=255)
description = models.TextField(_('description'), null=True, blank=True)
start_candidature = models.DateTimeField(_('start candidature'), blank=False)
start_candidature = models.DateTimeField(
_('start candidature'), blank=False)
end_candidature = models.DateTimeField(_('end candidature'), blank=False)
start_date = models.DateTimeField(_('start date'), blank=False)
end_date = models.DateTimeField(_('end date'), blank=False)
edit_groups = models.ManyToManyField(Group, related_name="editable_elections", verbose_name=_("edit groups"), blank=True)
view_groups = models.ManyToManyField(Group, related_name="viewable_elections", verbose_name=_("view groups"), blank=True)
vote_groups = models.ManyToManyField(Group, related_name="votable_elections", verbose_name=_("vote groups"), blank=True)
candidature_groups = models.ManyToManyField(Group, related_name="candidate_elections", verbose_name=_("candidature groups"), blank=True)
voters = models.ManyToManyField(User, verbose_name=('voters'), related_name='voted_elections')
edit_groups = models.ManyToManyField(
Group, related_name="editable_elections",
verbose_name=_("edit groups"), blank=True)
view_groups = models.ManyToManyField(
Group, related_name="viewable_elections",
verbose_name=_("view groups"), blank=True)
vote_groups = models.ManyToManyField(
Group, related_name="votable_elections",
verbose_name=_("vote groups"), blank=True)
candidature_groups = models.ManyToManyField(
Group, related_name="candidate_elections",
verbose_name=_("candidature groups"), blank=True)
voters = models.ManyToManyField(User, verbose_name=(
'voters'), related_name='voted_elections')
def __str__(self):
return self.title
@ -39,7 +47,8 @@ class Election(models.Model):
@property
def is_candidature_active(self):
now = timezone.now()
return bool(now <= self.end_candidature and now >= self.start_candidature)
return bool(now <= self.end_candidature and
now >= self.start_candidature)
@property
def is_vote_editable(self):
@ -77,7 +86,8 @@ class Role(models.Model):
"""
This class allows to create a new role avaliable for a candidature
"""
election = models.ForeignKey(Election, related_name='roles', verbose_name=_("election"))
election = models.ForeignKey(
Election, related_name='roles', verbose_name=_("election"))
title = models.CharField(_('title'), max_length=255)
description = models.TextField(_('description'), null=True, blank=True)
max_choice = models.IntegerField(_('max choice'), default=1)
@ -88,11 +98,13 @@ class Role(models.Model):
non_blank = 0
for candidature in self.candidatures.all():
cand_results = {}
cand_results['vote'] = self.votes.filter(candidature=candidature).count()
cand_results['vote'] = self.votes.filter(
candidature=candidature).count()
if total_vote == 0:
cand_results['percent'] = 0
else:
cand_results['percent'] = cand_results['vote'] * 100 / total_vote
cand_results['percent'] = cand_results[
'vote'] * 100 / total_vote
non_blank += cand_results['vote']
results[candidature.user.username] = cand_results
results['total vote'] = total_vote
@ -100,7 +112,8 @@ class Role(models.Model):
results['blank vote'] = {'vote': 0, 'percent': 0}
else:
results['blank vote'] = {'vote': total_vote - non_blank,
'percent': (total_vote - non_blank) * 100 / total_vote}
'percent': (total_vote -
non_blank) * 100 / total_vote}
return results
@property
@ -116,7 +129,8 @@ class ElectionList(models.Model):
To allow per list vote
"""
title = models.CharField(_('title'), max_length=255)
election = models.ForeignKey(Election, related_name='election_lists', verbose_name=_("election"))
election = models.ForeignKey(
Election, related_name='election_lists', verbose_name=_("election"))
def __str__(self):
return self.title
@ -126,10 +140,14 @@ class Candidature(models.Model):
"""
This class is a component of responsability
"""
role = models.ForeignKey(Role, related_name='candidatures', verbose_name=_("role"))
user = models.ForeignKey(User, verbose_name=_('user'), related_name='candidates', blank=True)
role = models.ForeignKey(
Role, related_name='candidatures', verbose_name=_("role"))
user = models.ForeignKey(User, verbose_name=_(
'user'), related_name='candidates', blank=True)
program = models.TextField(_('description'), null=True, blank=True)
election_list = models.ForeignKey(ElectionList, related_name='candidatures', verbose_name=_('election list'))
election_list = models.ForeignKey(
ElectionList, related_name='candidatures',
verbose_name=_('election list'))
def can_be_edited_by(self, user):
return (user == self.user) or user.can_edit(self.role.election)
@ -142,8 +160,10 @@ class Vote(models.Model):
"""
This class allows to vote for candidates
"""
role = models.ForeignKey(Role, related_name='votes', verbose_name=_("role"))
candidature = models.ManyToManyField(Candidature, related_name='votes', verbose_name=_("candidature"))
role = models.ForeignKey(
Role, related_name='votes', verbose_name=_("role"))
candidature = models.ManyToManyField(
Candidature, related_name='votes', verbose_name=_("candidature"))
def __str__(self):
return "Vote"
return "Vote"