2026-04-06 12:41:49 +01:00
|
|
|
"""
|
|
|
|
|
Pydantic models for organisation module
|
|
|
|
|
|
|
|
|
|
Models:
|
|
|
|
|
- List: Description
|
|
|
|
|
- Models: Description
|
|
|
|
|
"""
|
2026-05-19 12:55:46 +01:00
|
|
|
from typing import Optional
|
2026-04-06 12:41:49 +01:00
|
|
|
|
2026-05-25 15:15:50 +01:00
|
|
|
from pydantic import EmailStr, ConfigDict
|
|
|
|
|
|
2026-04-06 12:41:49 +01:00
|
|
|
from src.schemas import CustomBaseModel
|
|
|
|
|
from src.organisation.constants import Status, ContactType
|
2026-05-25 15:15:50 +01:00
|
|
|
from src.contact.schemas import ContactAddress
|
2026-04-06 12:41:49 +01:00
|
|
|
|
2026-05-19 12:55:46 +01:00
|
|
|
class OrgQuestionnaire(CustomBaseModel):
|
|
|
|
|
question_one: str
|
|
|
|
|
question_two: str
|
|
|
|
|
question_three: str
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgIDMixin(CustomBaseModel):
|
|
|
|
|
organisation_id: int
|
2026-05-19 12:55:46 +01:00
|
|
|
|
2026-04-06 12:41:49 +01:00
|
|
|
class OrgOrgPostRequest(CustomBaseModel):
|
|
|
|
|
name: str
|
2026-05-19 12:55:46 +01:00
|
|
|
intake_questionnaire: Optional[OrgQuestionnaire] = None
|
2026-04-06 12:41:49 +01:00
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgQuestionnairePatchRequest(OrgIDMixin):
|
2026-05-19 12:55:46 +01:00
|
|
|
intake_questionnaire: OrgQuestionnaire
|
2026-04-06 12:41:49 +01:00
|
|
|
partial: bool
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgStatusPatchRequest(OrgIDMixin):
|
2026-04-06 12:41:49 +01:00
|
|
|
status: Status
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgContactPatchRequest(OrgIDMixin):
|
|
|
|
|
contact_type: ContactType
|
|
|
|
|
|
2026-05-25 15:15:50 +01:00
|
|
|
email: Optional[EmailStr] = None
|
|
|
|
|
first_name: Optional[str] = None
|
|
|
|
|
last_name: Optional[str] = None
|
|
|
|
|
phonenumber: Optional[str] = None
|
|
|
|
|
vat_number: Optional[str] = None
|
|
|
|
|
post_office_box_number: Optional[str] = None
|
|
|
|
|
street_address: Optional[str] = None
|
|
|
|
|
street_address_line_2: Optional[str] = None
|
|
|
|
|
locality: Optional[str] = None
|
|
|
|
|
address_region: Optional[str] = None
|
|
|
|
|
country_code: Optional[str] = None
|
|
|
|
|
postal_code: Optional[str] = None
|
2026-04-06 12:41:49 +01:00
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgUserPostRequest(OrgIDMixin):
|
2026-04-06 12:41:49 +01:00
|
|
|
user_id: int
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgUserDeleteRequest(OrgIDMixin):
|
2026-05-25 16:54:45 +01:00
|
|
|
user_id: int
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class OrgRootPatchRequest(OrgIDMixin):
|
2026-04-06 12:41:49 +01:00
|
|
|
user_id: int
|
|
|
|
|
|
2026-05-25 16:54:45 +01:00
|
|
|
class OrgUserGetResponse(CustomBaseModel):
|
|
|
|
|
users: list[str]
|
|
|
|
|
|
|
|
|
|
class OrgGroupGetResponse(CustomBaseModel):
|
|
|
|
|
groups: list[str]
|
|
|
|
|
|
2026-04-06 12:41:49 +01:00
|
|
|
class OrgContactGetResponse(CustomBaseModel):
|
2026-05-25 15:15:50 +01:00
|
|
|
model_config = ConfigDict(from_attributes=True, extra="ignore")
|
|
|
|
|
|
|
|
|
|
email: Optional[str] = None
|
|
|
|
|
first_name: Optional[str] = None
|
|
|
|
|
last_name: Optional[str] = None
|
|
|
|
|
phonenumber: Optional[str] = None
|
2026-04-06 12:41:49 +01:00
|
|
|
vat_number: Optional[str] = None
|
|
|
|
|
|
2026-05-25 15:15:50 +01:00
|
|
|
address: ContactAddress
|
|
|
|
|
|
2026-04-06 12:41:49 +01:00
|
|
|
class OrgOrgGetResponse(CustomBaseModel):
|
|
|
|
|
name: str
|
|
|
|
|
status: Status
|
2026-05-25 12:40:28 +01:00
|
|
|
root_user: Optional[str] = None
|
2026-05-25 15:15:50 +01:00
|
|
|
owner_contact: Optional[str] = None
|
|
|
|
|
billing_contact: Optional[str] = None
|
|
|
|
|
security_contact: Optional[str] = None
|
2026-05-27 12:21:03 +01:00
|
|
|
|
|
|
|
|
class OrgDeleteOrgRequest(OrgIDMixin):
|
|
|
|
|
pass
|