minor: org pydantic model cleanup

Contact models also updated since they are now fully incorporated into orgs.

Issue #9
This commit is contained in:
Chris Milne 2026-05-27 16:51:46 +01:00
parent 216836e2fd
commit 4bf5933376
3 changed files with 47 additions and 90 deletions

View file

@ -10,8 +10,11 @@ from typing import Optional
from pydantic import EmailStr, ConfigDict
from src.schemas import CustomBaseModel
from src.contact.schemas import ContactModel
from src.user.schemas import UserIDMixin
from src.organisation.constants import Status, ContactType
from src.contact.schemas import ContactAddress
class OrgQuestionnaire(CustomBaseModel):
question_one: str
@ -21,18 +24,19 @@ class OrgQuestionnaire(CustomBaseModel):
class OrgIDMixin(CustomBaseModel):
organisation_id: int
class OrgOrgPostRequest(CustomBaseModel):
class OrgPostOrgRequest(CustomBaseModel):
name: str
intake_questionnaire: Optional[OrgQuestionnaire] = None
class OrgQuestionnairePatchRequest(OrgIDMixin):
class OrgPatchQuestionnaireRequest(OrgIDMixin):
intake_questionnaire: OrgQuestionnaire
partial: bool
class OrgStatusPatchRequest(OrgIDMixin):
class OrgPatchStatusRequest(OrgIDMixin):
status: Status
class OrgContactPatchRequest(OrgIDMixin):
class OrgPatchContactRequest(OrgIDMixin):
contact_type: ContactType
email: Optional[EmailStr] = None
@ -48,33 +52,27 @@ class OrgContactPatchRequest(OrgIDMixin):
country_code: Optional[str] = None
postal_code: Optional[str] = None
class OrgUserPostRequest(OrgIDMixin):
user_id: int
class OrgPostUserRequest(OrgIDMixin, UserIDMixin):
pass
class OrgUserDeleteRequest(OrgIDMixin):
user_id: int
class OrgDeleteUserRequest(OrgIDMixin, UserIDMixin):
pass
class OrgRootPatchRequest(OrgIDMixin):
user_id: int
class OrgPatchRootRequest(OrgIDMixin, UserIDMixin):
pass
class OrgUserGetResponse(CustomBaseModel):
class OrgGetUserResponse(CustomBaseModel):
users: list[str]
class OrgGroupGetResponse(CustomBaseModel):
class OrgGetGroupResponse(CustomBaseModel):
groups: list[str]
class OrgContactGetResponse(CustomBaseModel):
class OrgGetContactResponse(CustomBaseModel):
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
vat_number: Optional[str] = None
contact: ContactModel
address: ContactAddress
class OrgOrgGetResponse(CustomBaseModel):
class OrgGetOrgResponse(CustomBaseModel):
name: str
status: Status
root_user: Optional[str] = None
@ -83,4 +81,4 @@ class OrgOrgGetResponse(CustomBaseModel):
security_contact: Optional[str] = None
class OrgDeleteOrgRequest(OrgIDMixin):
pass
pass