feat: allow to add new candidates

master
Pierre-Louis Guhur 11 months ago
parent 3d27d5d9b6
commit 9f9b7a1e48

@ -254,6 +254,14 @@ def update_election(
"You can't invite voters on a non-restricted election"
)
# Create new candidates (those whose Id is None)
for candidate in election.candidates:
if candidate.id is None:
params = candidate.dict()
db_candidate = create_candidate(db, candidate, election_ref, True)
candidate.id = int(str(db_candidate.id))
# Check that candidates look fine
candidate_ids = {c.id for c in election.candidates}
db_candidate_ids = {c.id for c in db_election.candidates}
if candidate_ids != db_candidate_ids:

@ -34,7 +34,7 @@ class CandidateGet(CandidateBase):
class CandidateUpdate(CandidateBase):
id: int
id: int | None = None
class CandidateCreate(CandidateBase):
@ -184,6 +184,8 @@ class ElectionCreate(ElectionBase):
@validator("grades")
def all_grades_have_unique_values_and_names(cls, grades: list[GradeBase]):
grades = [grade for grade in grades if grade.id is not None]
values = [g.value for g in grades]
if len(set(values)) != len(grades):
raise ArgumentsSchemaError("At least two grades have the same value")

Loading…
Cancel
Save