requests.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import datetime
  2. from typing import Literal, Optional
  3. from pydantic import UUID4, BaseModel, EmailStr, Field
  4. class BaseRequest(BaseModel):
  5. # may define additional fields or config shared across requests
  6. pass
  7. class RefreshTokenRequest(BaseRequest):
  8. refresh_token: str
  9. class UserUpdatePasswordRequest(BaseRequest):
  10. password: str
  11. class UserCreateRequest(BaseRequest):
  12. email: EmailStr
  13. password: str
  14. class SmsCreateRequest(BaseRequest):
  15. volunteer_id: Optional[UUID4] = None
  16. phone_number: str
  17. content: str
  18. sending_time: Optional[datetime.datetime] = None
  19. class SmsUpdateRequest(BaseRequest):
  20. volunteer_id: Optional[UUID4] = None
  21. phone_number: Optional[str] = None
  22. content: Optional[str] = None
  23. sending_time: Optional[datetime.datetime] = None
  24. class ProjectRequest(BaseRequest):
  25. name: str
  26. is_public: bool = Field(
  27. default=False,
  28. description="Allow anyone to access the information about this project without login",
  29. )
  30. class ProjectImportGsheetRequest(BaseRequest):
  31. sheet_url: str
  32. satursday_date: datetime.datetime
  33. erase_data: Optional[bool] = Field(default=False)
  34. class ProjectSMSBatchRequest(BaseRequest):
  35. template: str = Field(
  36. description="""Template to be use to create the SMS
  37. The placeholder that can be used in the template are
  38. - {titre} slot.title
  39. - {description} slot.description
  40. - {debut} slot.starting_time
  41. - {fin} slot.ending_ting
  42. - {respo} slot.responsible_contact
  43. - {prenom} volunteer.name
  44. - {nom} volunteer.surname""",
  45. examples=[
  46. "Bonjour {prenom},\nTon créneau {titre} commence à {debut}.\nla com bénévole"
  47. ],
  48. )
  49. delta_t: int = Field(
  50. default=10,
  51. description="Time in minutes that the sms need to be sent before the slot start",
  52. )
  53. class VolunteerCreateRequest(BaseRequest):
  54. name: str
  55. surname: Optional[str] = Field(default="")
  56. email: EmailStr
  57. phone_number: str
  58. automatic_sms: bool = Field(default=True)
  59. slots: Optional[list[UUID4]] = None
  60. comment: Optional[str] = None
  61. class VolunteerUpdateRequest(BaseRequest):
  62. name: Optional[str] = None
  63. surname: Optional[str] = None
  64. email: Optional[str] = None
  65. phone_number: Optional[str] = None
  66. automatic_sms: Optional[bool] = None
  67. slots: Optional[list[UUID4]] = None
  68. comment: Optional[str] = None
  69. class SlotCreateRequest(BaseRequest):
  70. title: str
  71. starting_time: datetime.datetime
  72. ending_time: datetime.datetime
  73. required_volunteers: Optional[int] = 0
  74. volunteers: Optional[list[UUID4]] = None
  75. template_id: Optional[UUID4] = None
  76. class SlotUpdateRequest(BaseRequest):
  77. title: Optional[str] = None
  78. starting_time: Optional[datetime.datetime] = None
  79. ending_time: Optional[datetime.datetime] = None
  80. required_volunteers: Optional[int] = None
  81. volunteers: Optional[list[UUID4]] = None
  82. template_id: Optional[UUID4 | Literal[""]] = None
  83. class TemplateCreateRequest(BaseRequest):
  84. title: str
  85. description: Optional[str] = None
  86. place: Optional[str] = None
  87. responsible_contact: Optional[str] = None
  88. tags: Optional[list[UUID4]] = None
  89. comment: Optional[str] = None
  90. class TemplateUpdateRequest(BaseRequest):
  91. title: Optional[str] = None
  92. description: Optional[str] = None
  93. place: Optional[str] = None
  94. responsible_contact: Optional[str] = None
  95. # slots: Optional[list[UUID4]] = None
  96. tags: Optional[list[UUID4]] = None
  97. comment: Optional[str] = None
  98. class TagCreateRequest(BaseRequest):
  99. title: str
  100. templates: Optional[list[UUID4]] = None
  101. class TagUpdateRequest(BaseRequest):
  102. title: Optional[str] = None
  103. templates: Optional[list[UUID4]] = None