| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- import datetime
- from typing import Literal
- from pydantic import UUID4, BaseModel, EmailStr, Field
- from app.models import OrgRole
- from app.schemas.objects import PlanningConstraints
- class BaseRequest(BaseModel):
- # may define additional fields or config shared across requests
- pass
- class ForgotPasswordRequest(BaseRequest):
- email: EmailStr
- class SetPasswordWithTokenRequest(BaseRequest):
- token: str
- password: str
- class RefreshTokenRequest(BaseRequest):
- refresh_token: str
- class UserCreateRequest(BaseRequest):
- email: EmailStr
- password: str
- name: str
- class UserInviteRequest(BaseRequest):
- email: EmailStr
- name: str
- phone_number: str | None = None
- org_role: OrgRole = OrgRole.RESPO_COMMISSION
- class UserUpdatePasswordRequest(BaseRequest):
- password: str
- class UserProfileUpdateRequest(BaseRequest):
- name: str | None = None
- phone_number: str | None = None
- class OrganizationRequest(BaseRequest):
- name: str
- class OrganizationMembershipCreateRequest(BaseRequest):
- """Adds an EXISTING user (by email) to an organization with a role.
- Does not create user accounts — see note below."""
- user_id: UUID4
- role: OrgRole
- class OrganizationMembershipUpdateRequest(BaseRequest):
- role: OrgRole
- class SmsCreateRequest(BaseRequest):
- volunteer_id: UUID4 | None = None
- phone_number: str
- content: str
- sending_time: datetime.datetime | None = None
- class SmsUpdateRequest(BaseRequest):
- volunteer_id: UUID4 | None = None
- phone_number: str | None = None
- content: str | None = None
- sending_time: datetime.datetime | None = None
- class ProjectCreateRequest(BaseRequest):
- organization_id: UUID4
- name: str
- is_public: bool = Field(
- default=False,
- description="Allow anyone to access the information about this project without login",
- )
- class ProjectConstraintUpdateRequest(PlanningConstraints):
- pass
- class ProjectUpdateRequest(BaseRequest):
- name: str
- is_public: bool = Field(
- default=False,
- description="Allow anyone to access the information about this project without login",
- )
- class ProjectImportGsheetRequest(BaseRequest):
- sheet_url: str
- satursday_date: datetime.datetime
- erase_data: bool | None = Field(default=False)
- class ProjectSMSBatchRequest(BaseRequest):
- template: str = Field(
- description="""Template to be use to create the SMS
-
- The placeholder that can be used in the template are
- - {titre} slot.title
- - {description} slot.description
- - {debut} slot.starting_time
- - {fin} slot.ending_ting
- - {respo} slot.responsible_override
- - {prenom} volunteer.name
- - {nom} volunteer.surname""",
- examples=["Bonjour {prenom},\nTon créneau {titre} commence à {debut}.\nla com bénévole"],
- )
- delta_t: int = Field(
- default=10,
- description="Time in minutes that the sms need to be sent before the slot start",
- )
- class CommissionCreateRequest(BaseModel):
- name: str
- class CommissionUpdateRequest(BaseModel):
- name: str
- class CommissionMembershipRequest(BaseModel):
- user_ids: list[UUID4]
- class VolunteerCreateRequest(BaseRequest):
- name: str
- surname: str | None = Field(default="")
- email: EmailStr
- phone_number: str
- automatic_sms: bool = Field(default=True)
- slots: list[UUID4] | None = None
- comment: str | None = None
- class VolunteerUpdateRequest(BaseRequest):
- name: str | None = None
- surname: str | None = None
- email: str | None = None
- phone_number: str | None = None
- automatic_sms: bool | None = None
- slots: list[UUID4] | None = None
- comment: str | None = None
- class VolunteerGroupCreateRequest(BaseRequest):
- name: str
- color: str | None = None
- class VolunteerGroupUpdateRequest(BaseRequest):
- name: str
- color: str | None = None
- class GroupMembershipRequest(BaseRequest):
- volunteer_ids: list[UUID4]
- class GroupSmsRequest(BaseRequest):
- content: str
- class SlotCreateRequest(BaseRequest):
- title: str
- starting_time: datetime.datetime
- ending_time: datetime.datetime
- required_volunteers: int | None = 0
- volunteers: list[UUID4] | None = None
- template_id: UUID4 | None = None
- class SlotUpdateRequest(BaseRequest):
- title: str | None = None
- starting_time: datetime.datetime | None = None
- ending_time: datetime.datetime | None = None
- required_volunteers: int | None = None
- volunteers: list[UUID4] | None = None
- template_id: UUID4 | Literal[""] | None = None
- class TemplateCreateRequest(BaseRequest):
- title: str
- description: str | None = None
- place: str | None = None
- responsible_override: str | None = None
- tags: list[UUID4] | None = None
- comment: str | None = None
- commission_id: UUID4 | None = None
- class TemplateUpdateRequest(BaseRequest):
- title: str | None = None
- description: str | None = None
- place: str | None = None
- responsible_override: str | None = None
- # slots: Optional[list[UUID4]] = None
- tags: list[UUID4] | None = None
- comment: str | None = None
- commission_id: UUID4 | None = None
- class TagCreateRequest(BaseRequest):
- title: str
- templates: list[UUID4] | None = None
- class TagUpdateRequest(BaseRequest):
- title: str | None = None
- templates: list[UUID4] | None = None
|