updated guild
This commit is contained in:
parent
3ca01ede8f
commit
f9fd4db33c
@ -1,4 +1,6 @@
|
||||
set -o pipefail
|
||||
#! /bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
uv run mypy src/
|
||||
uv run ruff check "$@"
|
||||
|
||||
@ -19,7 +19,7 @@ dev = [
|
||||
]
|
||||
|
||||
[tool.mypy]
|
||||
disable_error_code = ["import-untyped"]
|
||||
disable_error_code = ["import-untyped", "prop-decorator"]
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
|
||||
@ -24,4 +24,4 @@ ListCommitteesResponse = list[BaseModel]
|
||||
class ListCommitteeEditionsRequest(BaseModel):
|
||||
committee: UUID7
|
||||
|
||||
ListCommitteeEditionsResponse = list[BaseModel]
|
||||
ListCommitteeEditionsResponse = list[BaseModel]
|
||||
|
||||
@ -6,4 +6,4 @@ from .refs import CollectionName
|
||||
class FiberBaseModel(BaseModel):
|
||||
uuid: UUID7
|
||||
collection_name: CollectionName
|
||||
last_change: datetime = Field(default_factory=lambda: datetime.now())
|
||||
last_change: datetime = Field(default_factory=datetime.now)
|
||||
|
||||
@ -3,8 +3,7 @@ from pydantic import model_validator, UUID7, computed_field
|
||||
from fiber_package.refs import (
|
||||
CommitteeEditionRef,
|
||||
CommitteeEditionRefList,
|
||||
EntityRefList,
|
||||
AssociationRef
|
||||
EntityRefList
|
||||
)
|
||||
from fiber_package.base import FiberBaseModel
|
||||
|
||||
@ -22,15 +21,13 @@ An edition is a definite group of members with functions and a timespan.
|
||||
class CommitteeModel(FiberBaseModel):
|
||||
collection_name: Literal["committee"] = "committee"
|
||||
|
||||
association_tag: str
|
||||
|
||||
short_name: str
|
||||
full_name_en: str
|
||||
full_name_nl: str
|
||||
description_en: str = ""
|
||||
description_nl: str = ""
|
||||
association_tag: str
|
||||
committee_type: CommitteeType
|
||||
|
||||
active: bool = True
|
||||
|
||||
ldap_id: int | None = None
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
from pydantic import Field
|
||||
|
||||
from .person import PersonModel
|
||||
from .submodels import Address, LoginInfo
|
||||
from .enums import Study
|
||||
|
||||
# An associate is someone who frequents activities & receives weekly mailing
|
||||
# However this person is not a full member, so no GMM rights
|
||||
|
||||
@ -15,4 +15,4 @@ class Study(StrEnum):
|
||||
bsc_dsai = "Bachelor Data Science & AI"
|
||||
msc_math = "Master Mathematics"
|
||||
msc_phys = "Master Physics"
|
||||
min_dsai = "Minor Data Science & AI"
|
||||
min_dsai = "Minor Data Science & AI"
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
from pydantic import Field
|
||||
|
||||
from .associate import AssociateModel
|
||||
from .submodels import Address, LoginInfo
|
||||
from .enums import Study
|
||||
|
||||
class MemberModel(AssociateModel):
|
||||
|
||||
@ -27,7 +27,7 @@ class PersonModel(FiberBaseModel):
|
||||
date_of_birth: date | None = None
|
||||
|
||||
|
||||
@computed_field
|
||||
@computed_field # type: ignore[prop-decorator]
|
||||
@property
|
||||
def underage(self) -> bool:
|
||||
if self.date_of_birth is None:
|
||||
@ -50,5 +50,5 @@ class PersonModel(FiberBaseModel):
|
||||
|
||||
# Needed for dates, as pymongo cannot handle them
|
||||
@field_serializer("date_of_birth", when_used="always")
|
||||
def serialize_date(self, value: date | None):
|
||||
def serialize_date(self, value: date | None) -> str | None:
|
||||
return value.isoformat() if value else None
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
from pydantic import model_validator
|
||||
from fiber_package.refs import EntityRefList, EntityRef
|
||||
from pydantic import model_validator, Field, UUID7
|
||||
from fiber_package.refs import EntityRefList
|
||||
|
||||
from datetime import date
|
||||
|
||||
@ -18,17 +18,20 @@ Removing old members from last_active is done in fiber
|
||||
class GuildModel(FiberBaseModel):
|
||||
collection_name: Literal["guild"] = "guild"
|
||||
|
||||
short_name: str
|
||||
full_name_en: str
|
||||
full_name_nl: str
|
||||
description_en: str
|
||||
description_nl: str
|
||||
association_tag: str
|
||||
|
||||
ldap_id: int | None = None
|
||||
|
||||
members: EntityRefList
|
||||
previous_members: EntityRefList
|
||||
guild_masters: list[UUID7]
|
||||
|
||||
guild_masters: EntityRefList
|
||||
|
||||
last_active: dict[EntityRef, date]
|
||||
last_active: dict[UUID7, date] = Field(default_factory=dict)
|
||||
|
||||
@model_validator(mode='after')
|
||||
def current_members_not_previous(self) -> Self:
|
||||
@ -45,3 +48,10 @@ class GuildModel(FiberBaseModel):
|
||||
if master not in self.members:
|
||||
raise ValueError("All guild masters must be members!")
|
||||
return self
|
||||
|
||||
@model_validator(mode='after')
|
||||
def guild_masters_always_active(self) -> Self:
|
||||
today = date.today()
|
||||
for uuid in self.guild_masters:
|
||||
self.last_active[uuid] = today
|
||||
return self
|
||||
|
||||
@ -8,7 +8,7 @@ class Membership(StrEnum):
|
||||
member = "member"
|
||||
associate = "associate"
|
||||
alumn = "alumn"
|
||||
# extern is linked to association A if they ever visisted an activity of association A
|
||||
# extern is linked to association if they visited one of their activities
|
||||
extern = "extern"
|
||||
|
||||
def validate_visibility_tag(v: str) -> str:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user