mirror of
https://github.com/ae-utbm/sith.git
synced 2026-06-04 23:29:24 +00:00
feat: link election Role to ClubRole
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
# Generated by Django 5.2.14 on 2026-05-30 20:00
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("club", "0017_linktype_clublink"),
|
||||||
|
("election", "0005_alter_candidature_program_alter_candidature_user"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="election",
|
||||||
|
name="clubs",
|
||||||
|
field=models.ManyToManyField(
|
||||||
|
help_text="The club(s) this election is held for.",
|
||||||
|
related_name="elections",
|
||||||
|
to="club.club",
|
||||||
|
verbose_name="clubs",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="role",
|
||||||
|
name="club_role",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
help_text=(
|
||||||
|
"A club role. Filling this will allow automatic "
|
||||||
|
"completion of title and description, "
|
||||||
|
"and automatic assignation after the elections."
|
||||||
|
),
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
related_name="election_roles",
|
||||||
|
to="club.clubrole",
|
||||||
|
verbose_name="club role",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="role",
|
||||||
|
name="description",
|
||||||
|
field=models.TextField(blank=True, default="", verbose_name="description"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="role",
|
||||||
|
name="max_choice",
|
||||||
|
field=models.PositiveSmallIntegerField(
|
||||||
|
default=1, verbose_name="max choice"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
+25
-3
@@ -5,6 +5,7 @@ from django.utils.functional import cached_property
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from ordered_model.models import OrderedModel
|
from ordered_model.models import OrderedModel
|
||||||
|
|
||||||
|
from club.models import Club, ClubRole
|
||||||
from core.models import Group, User
|
from core.models import Group, User
|
||||||
|
|
||||||
|
|
||||||
@@ -13,6 +14,12 @@ class Election(models.Model):
|
|||||||
|
|
||||||
title = models.CharField(_("title"), max_length=255)
|
title = models.CharField(_("title"), max_length=255)
|
||||||
description = models.TextField(_("description"), null=True, blank=True)
|
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)
|
start_candidature = models.DateTimeField(_("start candidature"), blank=False)
|
||||||
end_candidature = models.DateTimeField(_("end candidature"), blank=False)
|
end_candidature = models.DateTimeField(_("end candidature"), blank=False)
|
||||||
start_date = models.DateTimeField(_("start date"), blank=False)
|
start_date = models.DateTimeField(_("start date"), blank=False)
|
||||||
@@ -96,7 +103,7 @@ class Election(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class Role(OrderedModel):
|
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 = models.ForeignKey(
|
||||||
Election,
|
Election,
|
||||||
@@ -105,8 +112,23 @@ class Role(OrderedModel):
|
|||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
)
|
)
|
||||||
title = models.CharField(_("title"), max_length=255)
|
title = models.CharField(_("title"), max_length=255)
|
||||||
description = models.TextField(_("description"), null=True, blank=True)
|
description = models.TextField(_("description"), default="", blank=True)
|
||||||
max_choice = models.IntegerField(_("max choice"), default=1)
|
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):
|
def __str__(self):
|
||||||
return f"{self.title} - {self.election.title}"
|
return f"{self.title} - {self.election.title}"
|
||||||
|
|||||||
Reference in New Issue
Block a user