Merge branch 'master' of dlfdev.liacs.nl:ictgilde/fiber-package
This commit is contained in:
commit
990b3f4429
@ -2,9 +2,26 @@ from pydantic import BaseModel, UUID7
|
|||||||
|
|
||||||
from fiber_package.membership_tag import Membership
|
from fiber_package.membership_tag import Membership
|
||||||
|
|
||||||
ListPeopleResponse = list[BaseModel]
|
# List People
|
||||||
|
|
||||||
class ListPeopleRequest(BaseModel):
|
class ListPeopleRequest(BaseModel):
|
||||||
association_tag: str
|
association_tag: str
|
||||||
membership: Membership
|
membership: Membership
|
||||||
query: str | None
|
query: str | None = None
|
||||||
|
|
||||||
|
ListPeopleResponse = list[BaseModel]
|
||||||
|
|
||||||
|
# List Committees
|
||||||
|
|
||||||
|
class ListCommitteesRequest(BaseModel):
|
||||||
|
association_tag: str
|
||||||
|
query: str | None = None
|
||||||
|
|
||||||
|
ListCommitteesResponse = list[BaseModel]
|
||||||
|
|
||||||
|
# List Committee Editions
|
||||||
|
|
||||||
|
class ListCommitteeEditionsRequest(BaseModel):
|
||||||
|
committee: UUID7
|
||||||
|
|
||||||
|
ListCommitteeEditionsResponse = list[BaseModel]
|
||||||
@ -1,9 +1,10 @@
|
|||||||
from pydantic import model_validator, UUID7
|
from pydantic import model_validator, UUID7, computed_field
|
||||||
|
|
||||||
from fiber_package.refs import (
|
from fiber_package.refs import (
|
||||||
CommitteeEditionRef,
|
CommitteeEditionRef,
|
||||||
CommitteeEditionRefList,
|
CommitteeEditionRefList,
|
||||||
EntityRefList
|
EntityRefList,
|
||||||
|
AssociationRef
|
||||||
)
|
)
|
||||||
from fiber_package.base import FiberBaseModel
|
from fiber_package.base import FiberBaseModel
|
||||||
|
|
||||||
@ -21,6 +22,9 @@ An edition is a definite group of members with functions and a timespan.
|
|||||||
class CommitteeModel(FiberBaseModel):
|
class CommitteeModel(FiberBaseModel):
|
||||||
collection_name: Literal["committee"] = "committee"
|
collection_name: Literal["committee"] = "committee"
|
||||||
|
|
||||||
|
association: AssociationRef
|
||||||
|
|
||||||
|
short_name: str
|
||||||
full_name_en: str
|
full_name_en: str
|
||||||
full_name_nl: str
|
full_name_nl: str
|
||||||
description_en: str = ""
|
description_en: str = ""
|
||||||
@ -47,12 +51,27 @@ class CommitteeEditionModel(FiberBaseModel):
|
|||||||
members: EntityRefList
|
members: EntityRefList
|
||||||
functions: dict[UUID7, str]
|
functions: dict[UUID7, str]
|
||||||
|
|
||||||
|
remarks: str = ""
|
||||||
|
|
||||||
start_date: date
|
start_date: date
|
||||||
end_date: date | None # None means ongoing
|
end_date: date | None # None means ongoing
|
||||||
|
|
||||||
|
@computed_field
|
||||||
|
@property
|
||||||
|
def edition_string(self) -> str:
|
||||||
|
start_year = self.start_date.year
|
||||||
|
if self.end_date is None:
|
||||||
|
return f"{start_year} - "
|
||||||
|
else:
|
||||||
|
end_year = self.end_date.year
|
||||||
|
if end_year == start_year:
|
||||||
|
return f"{start_year}"
|
||||||
|
else:
|
||||||
|
return f"{start_year} - {end_year}"
|
||||||
|
|
||||||
@model_validator(mode='after')
|
@model_validator(mode='after')
|
||||||
def functions_to_members_only(self) -> Self:
|
def functions_to_members_only(self) -> Self:
|
||||||
for uuid in self.functions:
|
for uuid in self.functions:
|
||||||
if uuid not in self.members:
|
if uuid not in self.members:
|
||||||
raise ValueError("Cannot only assign functions to committee members")
|
raise ValueError("Can only assign functions to committee members")
|
||||||
return self
|
return self
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user