feat: link election Role to ClubRole

This commit is contained in:
imperosol
2026-05-31 12:24:42 +02:00
parent ba618aa3cd
commit eb7f5def6e
2 changed files with 78 additions and 3 deletions
+25 -3
View File
@@ -5,6 +5,7 @@ from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from ordered_model.models import OrderedModel
from club.models import Club, ClubRole
from core.models import Group, User
@@ -13,6 +14,12 @@ class Election(models.Model):
title = models.CharField(_("title"), max_length=255)
description = models.TextField(_("description"), null=True, blank=True)
clubs = models.ManyToManyField(
Club,
related_name="elections",
verbose_name=_("clubs"),
help_text=_("The club(s) this election is held for."),
)
start_candidature = models.DateTimeField(_("start candidature"), blank=False)
end_candidature = models.DateTimeField(_("end candidature"), blank=False)
start_date = models.DateTimeField(_("start date"), blank=False)
@@ -96,7 +103,7 @@ class Election(models.Model):
class Role(OrderedModel):
"""This class allows to create a new role avaliable for a candidature."""
"""This class allows to create a new role available for a candidature."""
election = models.ForeignKey(
Election,
@@ -105,8 +112,23 @@ class Role(OrderedModel):
on_delete=models.CASCADE,
)
title = models.CharField(_("title"), max_length=255)
description = models.TextField(_("description"), null=True, blank=True)
max_choice = models.IntegerField(_("max choice"), default=1)
description = models.TextField(_("description"), default="", blank=True)
max_choice = models.PositiveSmallIntegerField(_("max choice"), default=1)
club_role = models.ForeignKey(
ClubRole,
related_name="election_roles",
verbose_name=_("club role"),
help_text=_(
"A club role. Filling this will allow automatic "
"completion of title and description, "
"and automatic assignation after the elections."
),
on_delete=models.CASCADE,
null=True,
blank=True,
)
order_with_respect_to = "election"
def __str__(self):
return f"{self.title} - {self.election.title}"