Compare commits
No commits in common. "4fd9b5e0994e5521f94e08511f8997443f703682" and "62a99cc57bdbd4aaabb7b30034f304627b09f610" have entirely different histories.
4fd9b5e099
...
62a99cc57b
@ -1,11 +0,0 @@
|
|||||||
from fiber_package.base import FiberBaseModel
|
|
||||||
from fiber_package.refs import EntityRefList, CommitteeRefList, GuildRefList
|
|
||||||
from enum import StrEnum
|
|
||||||
|
|
||||||
|
|
||||||
class AssociationModel(FiberBaseModel):
|
|
||||||
full_name: str
|
|
||||||
# short name used for visibility strings (think: DLF, Kaiser, CNB, etc...)
|
|
||||||
tag: str
|
|
||||||
|
|
||||||
|
|
||||||
@ -2,8 +2,8 @@ from enum import StrEnum
|
|||||||
|
|
||||||
class Membership(StrEnum):
|
class Membership(StrEnum):
|
||||||
member = "member"
|
member = "member"
|
||||||
activity_goer = "activity_goer"
|
|
||||||
alumn = "alumn"
|
alumn = "alumn"
|
||||||
|
extern = "extern"
|
||||||
|
|
||||||
class LanguageOption(StrEnum):
|
class LanguageOption(StrEnum):
|
||||||
nl = "NL"
|
nl = "NL"
|
||||||
@ -13,3 +13,15 @@ class Gender(StrEnum):
|
|||||||
male = "m"
|
male = "m"
|
||||||
female = "f"
|
female = "f"
|
||||||
nonbinary = "n"
|
nonbinary = "n"
|
||||||
|
|
||||||
|
class HonoraryStatus(StrEnum):
|
||||||
|
merit = "merit"
|
||||||
|
honorary = "honorary"
|
||||||
|
|
||||||
|
class OnlineAlmanacField(StrEnum):
|
||||||
|
address = "address"
|
||||||
|
birth_date = "birth_date"
|
||||||
|
email = "email"
|
||||||
|
phone_number = "phone_number"
|
||||||
|
study = "study"
|
||||||
|
gender = "gender"
|
||||||
|
|||||||
@ -2,10 +2,19 @@
|
|||||||
from .person import PersonModel
|
from .person import PersonModel
|
||||||
from .enums import HonoraryStatus, Gender
|
from .enums import HonoraryStatus, Gender
|
||||||
|
|
||||||
class AlumnModel(PersonModel):
|
class FormerMemberModel(PersonModel):
|
||||||
|
title: str | None = None
|
||||||
|
gender: Gender | None = None
|
||||||
|
honorary_status: HonoraryStatus | None = None
|
||||||
|
# TODO: picture, study_start (year, month?), study_end
|
||||||
|
|
||||||
|
# company emails?
|
||||||
|
|
||||||
|
class AlumnModel(FormerMemberModel):
|
||||||
graduated: bool = False
|
graduated: bool = False
|
||||||
receive_spam_mail: bool = True
|
receive_spam_mail: bool = True
|
||||||
|
|
||||||
class ExternalModel(PersonModel):
|
class ExternalModel(PersonModel):
|
||||||
pass
|
pass
|
||||||
|
# TODO... payment???
|
||||||
|
# TODO require login info??
|
||||||
|
|||||||
@ -3,23 +3,23 @@ from typing import Self, Literal
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
from fiber_package.base import FiberBaseModel
|
from fiber_package.base import FiberBaseModel
|
||||||
from fiber_package.membership_tag import MembershipTag
|
from .enums import Membership, LanguageOption
|
||||||
from .enums import LanguageOption
|
|
||||||
from .submodels import Address
|
from .submodels import Address
|
||||||
|
|
||||||
class PersonModel(FiberBaseModel):
|
class PersonModel(FiberBaseModel):
|
||||||
collection_name: Literal["entity"] = "entity"
|
collection_name: Literal["entity"] = "entity"
|
||||||
|
|
||||||
memberships: list[MembershipTag]
|
membership: dict[str, Membership] = Field(default_factory=dict)
|
||||||
|
|
||||||
first_name: str
|
first_name: str
|
||||||
infix_name: str | None = None # tussenvoegsel in Dutch names
|
infix: str | None = None # mostly in Dutch names
|
||||||
last_name: str
|
last_name: str
|
||||||
full_name: str | None = None # first_name + infix + last_name
|
full_name: str | None = None # first_name + infix + last_name
|
||||||
email: EmailStr
|
email: EmailStr
|
||||||
language: LanguageOption
|
language: LanguageOption
|
||||||
|
|
||||||
|
# TODO: phone number
|
||||||
address: Address | None = None
|
address: Address | None = None
|
||||||
phone_number: str | None = None
|
|
||||||
|
|
||||||
date_of_birth: date | None = None
|
date_of_birth: date | None = None
|
||||||
|
|
||||||
@ -39,13 +39,8 @@ class PersonModel(FiberBaseModel):
|
|||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def generate_full_name(self) -> Self:
|
def generate_full_name(self) -> Self:
|
||||||
full_name = self.first_name
|
full_name = self.first_name
|
||||||
<<<<<<< HEAD
|
|
||||||
if self.infix:
|
if self.infix:
|
||||||
full_name += " " + self.infix
|
full_name += " " + self.infix
|
||||||
=======
|
|
||||||
if self.infix_name:
|
|
||||||
full_name += " " + self.infix_name
|
|
||||||
>>>>>>> tiago/db_structure
|
|
||||||
full_name += " " + self.last_name
|
full_name += " " + self.last_name
|
||||||
self.full_name = full_name
|
self.full_name = full_name
|
||||||
return self
|
return self
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
from typing import Annotated
|
|
||||||
from pydantic import AfterValidator
|
|
||||||
|
|
||||||
from entity.member import MembershipTag
|
|
||||||
|
|
||||||
BARE_TAGS = ["public"]
|
|
||||||
|
|
||||||
def validate_visibility_tag(v: str) -> str:
|
|
||||||
if v in BARE_TAGS:
|
|
||||||
return v
|
|
||||||
_, _, status = v.partition(":")
|
|
||||||
if status in MembershipType:
|
|
||||||
return v
|
|
||||||
raise ValueError(f"Invalid visibility tag: {v!r}")
|
|
||||||
|
|
||||||
VisibilityTag = Annotated[str, AfterValidator(validate_visibility_tag)]
|
|
||||||
|
|
||||||
def generate_tag(association_tag: str, membership_tag: MembershipTag):
|
|
||||||
return association_tag + ":" + membership_tag
|
|
||||||
@ -26,9 +26,8 @@ class RefList[C: str]:
|
|||||||
def __contains__(self, item: UUID7) -> bool:
|
def __contains__(self, item: UUID7) -> bool:
|
||||||
return item in self.uuids
|
return item in self.uuids
|
||||||
|
|
||||||
|
SystemRef = Ref[Literal["system"]]
|
||||||
AssociationRef = Ref[Literal["association"]]
|
SystemRefList = RefList[Literal["system"]]
|
||||||
AssociationRefList = RefList[Literal["association"]]
|
|
||||||
|
|
||||||
EntityRef = Ref[Literal["entity"]]
|
EntityRef = Ref[Literal["entity"]]
|
||||||
EntityRefList = RefList[Literal["entity"]]
|
EntityRefList = RefList[Literal["entity"]]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from fiber_package.base import FiberBaseModel
|
from fiber_package.base import FiberBaseModel
|
||||||
from fiber_package.refs import AssociationRefList, EntityRefList
|
from fiber_package.refs import SystemRefList, EntityRefList
|
||||||
|
|
||||||
class RootGroupModel(FiberBaseModel):
|
class RootGroupModel(FiberBaseModel):
|
||||||
associations: AssociationRefList
|
associations: SystemRefList
|
||||||
sys_admins: EntityRefList
|
sys_admins: EntityRefList
|
||||||
Loading…
x
Reference in New Issue
Block a user