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
|
||||
|
||||
ListPeopleResponse = list[BaseModel]
|
||||
# List People
|
||||
|
||||
class ListPeopleRequest(BaseModel):
|
||||
association_tag: str
|
||||
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 (
|
||||
CommitteeEditionRef,
|
||||
CommitteeEditionRefList,
|
||||
EntityRefList
|
||||
EntityRefList,
|
||||
AssociationRef
|
||||
)
|
||||
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):
|
||||
collection_name: Literal["committee"] = "committee"
|
||||
|
||||
association: AssociationRef
|
||||
|
||||
short_name: str
|
||||
full_name_en: str
|
||||
full_name_nl: str
|
||||
description_en: str = ""
|
||||
@ -47,12 +51,27 @@ class CommitteeEditionModel(FiberBaseModel):
|
||||
members: EntityRefList
|
||||
functions: dict[UUID7, str]
|
||||
|
||||
remarks: str = ""
|
||||
|
||||
start_date: date
|
||||
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')
|
||||
def functions_to_members_only(self) -> Self:
|
||||
for uuid in self.functions:
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user