Simplified Group/Entity Lists/Ref to simple type aliases

This commit is contained in:
Tiago Scholten 2026-06-07 22:24:38 +02:00
parent 5d40e4f358
commit 456bdbf63a
2 changed files with 10 additions and 31 deletions

View File

@ -17,11 +17,12 @@ class CommitteeModel(BaseModel):
full_name_NL: str
description_EN: str
description_NL: str
committee_type: CommitteeType
active: bool = True
editions: GroupList
current_edition: GroupRef
current_edition: GroupRef | None
@model_validator(mode='after')
def current_edition_in_editions(self) -> Self:
@ -32,6 +33,8 @@ class CommitteeModel(BaseModel):
raise ValueError("Current edition must be in list of editions")
return self
# TODO... maybe require that an active board always has a current_edition that is non-empty?
class CommitteeEditionModel(BaseModel):
members: EntityList
functions: dict[UUID4, str]

View File

@ -1,33 +1,9 @@
from dataclasses import dataclass, field
from typing import Annotated
from pydantic import RootModel, Field, UUID4
from pydantic import UUID4
'''
(Entity/Group)(List/Ref) represents a list / single instance of entities / groups.
This is for fiber to know in which Mongo collection to look.
EntityList = Annotated[list[UUID4], Field(default_factory=list)]
GroupList = Annotated[list[UUID4], Field(default_factory=list)]
the __iter__ function allows us to do things as
"for member in edition.members"
'''
@dataclass(slots=True)
class EntityList:
uuids: list[UUID4] = field(default_factory=list)
def __iter__(self):
return iter(self.uuids)
@dataclass(slots=True)
class GroupList:
uuids: list[UUID4] = field(default_factory=list)
def __iter__(self):
return iter(self.uuids)
@dataclass(slots=True)
class EntityRef:
uuids: UUID4
@dataclass(slots=True)
class GroupRef:
uuids: UUID4
EntityRef = UUID4
GroupRef = UUID4