選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

273 行
6.7 KiB

  1. from pydantic import BaseModel, Field
  2. from typing import Optional
  3. from uuid import UUID
  4. from typing import Optional, Union, Literal
  5. from typing import List
  6. from typing import Tuple
  7. from typing import Dict
  8. class BuildingItem(BaseModel):
  9. id: UUID
  10. name: str
  11. city: Optional[str] = None
  12. address: Optional[str] = None
  13. latitude: Optional[float] = None
  14. longitude: Optional[float] = None
  15. class FloorItem(BaseModel):
  16. id: UUID
  17. name: str
  18. floornumber: int
  19. image: Optional[str] = None
  20. description: Optional[str] = None
  21. scale: Optional[float] = None
  22. building: Optional[UUID] = None
  23. class ZoneItem(BaseModel):
  24. id: UUID
  25. name: str
  26. groups: Optional[List[UUID]] = None
  27. floor: Optional[UUID] = None
  28. building: Optional[UUID] = None
  29. class ZoneAreaPointItem(BaseModel):
  30. x: float
  31. y: float
  32. class ZoneAreaDefinitionItem(BaseModel):
  33. UUID: UUID
  34. ZoneUUID: UUID
  35. points: List[ZoneAreaPointItem]
  36. class GatewayItem(BaseModel):
  37. id: UUID
  38. name: str
  39. mac: Optional[str] = None
  40. status: Optional[Union[str, bool]] = None
  41. model: Optional[str] = None
  42. ip: Optional[str] = None
  43. position: Optional[str] = None
  44. x: Optional[float] = None
  45. y: Optional[float] = None
  46. notes: Optional[str] = None
  47. floor: Optional[UUID] = None
  48. building: Optional[UUID] = None
  49. zone: Optional[UUID] = None
  50. class TrackerItem(BaseModel):
  51. id: UUID
  52. name: str
  53. mac: Optional[str] = None
  54. status: Optional[str] = None
  55. model: Optional[str] = None
  56. position: Optional[str] = None
  57. notes: Optional[str] = None
  58. x: Optional[float] = None
  59. y: Optional[float] = None
  60. floor: Optional[UUID] = None
  61. building: Optional[UUID] = None
  62. battery: Optional[str] = None
  63. temperature: Optional[str] = None
  64. acceleration: Optional[str] = None
  65. heartRate: Optional[str] = None
  66. buttonPress: Optional[bool] = None
  67. class SettingItem(BaseModel):
  68. id: str
  69. name: str
  70. role: str
  71. unit: int
  72. update: Optional[int] = None
  73. debug: bool
  74. debugFields: Optional[List[str]] = None
  75. language: str
  76. class CoreSettingsItem(BaseModel):
  77. ID: int
  78. current_algorithm: str
  79. location_confidence: int
  80. last_seen_threshold: int
  81. beacon_metric_size: int
  82. HA_send_interval: int
  83. HA_send_changes_only: bool
  84. RSSI_enforce_threshold: bool
  85. RSSI_min_threshold: int
  86. class CoreSettingsUpdateItem(BaseModel):
  87. current_algorithm: str
  88. last_seen_threshold: int
  89. beacon_metric_size: int
  90. HA_send_interval: int
  91. HA_send_changes_only: bool
  92. RSSI_enforce_threshold: bool
  93. RSSI_min_threshold: int
  94. location_confidence: Optional[int] = None
  95. class GuiConfigItem(BaseModel):
  96. id: str
  97. name: Optional[str] = None
  98. role: Optional[Literal["developer", "administrator", "user"]] = None
  99. debug: Optional[bool] = None
  100. class TablePreferenceItem(BaseModel):
  101. hiddenColumns: Dict[str, bool] = Field(default_factory=dict)
  102. class UserPreferencesItem(BaseModel):
  103. id: Optional[UUID] = None
  104. uid: str
  105. language: Literal["it", "en"] = "it"
  106. tables: Dict[str, TablePreferenceItem] = Field(default_factory=dict)
  107. updated_at: Optional[str] = None
  108. class UserPreferencesUpdateItem(BaseModel):
  109. language: Optional[Literal["it", "en"]] = None
  110. tables: Optional[Dict[str, TablePreferenceItem]] = None
  111. class OperatorItem(BaseModel):
  112. id: UUID
  113. name: str
  114. phone: Optional[str] = None
  115. zones: List[UUID]
  116. groups: Optional[str] = None
  117. notes: Optional[str] = None
  118. building: Optional[UUID] = None
  119. class SubjectItem(BaseModel):
  120. id: UUID
  121. name: str
  122. role: Optional[str] = None
  123. phone: Optional[str] = None
  124. tracker: UUID
  125. groups: Optional[str] = None
  126. notes: Optional[str] = None
  127. building: Optional[UUID] = None
  128. class AlarmItem(BaseModel):
  129. id: UUID
  130. timestamp: Optional[str] = None
  131. type: Optional[str] = None
  132. status: Optional[str] = None
  133. gateway: Optional[UUID] = None
  134. gatewayMac: Optional[str] = None
  135. tracker: Optional[UUID] = None
  136. trackerBid: Optional[str] = None
  137. subject: Optional[UUID] = None
  138. subjectName: Optional[str] = None
  139. operator: Optional[UUID] = None
  140. operatorName: Optional[str] = None
  141. zone: Optional[UUID] = None
  142. zoneName: Optional[str] = None
  143. building: Optional[UUID] = None
  144. class AlarmCoreItem(BaseModel):
  145. id: UUID
  146. tracker_id: UUID
  147. type: str
  148. status: str
  149. timestamp: str
  150. operator: Optional[UUID] = None
  151. resolution_timestamp: Optional[str] = None
  152. class AlarmStatusUpdateItem(BaseModel):
  153. id: UUID
  154. status: str
  155. class TrackItem(BaseModel):
  156. id: UUID
  157. timestamp: Optional[str] = None
  158. type: Optional[str] = None
  159. status: Optional[str] = None
  160. gateway: Optional[UUID] = None
  161. gatewayMac: Optional[str] = None
  162. tracker: Optional[UUID] = None
  163. trackerMac: Optional[str] = None
  164. subject: Optional[UUID] = None
  165. subjectName: Optional[str] = None
  166. floor: Optional[UUID] = None
  167. signal: Optional[float] = None
  168. building: Optional[UUID] = None
  169. x: Optional[float] = None
  170. y: Optional[float] = None
  171. z: Optional[float] = None
  172. class TrackHistoryItem(BaseModel):
  173. ID: Optional[int] = None
  174. id: UUID
  175. timestamp: Optional[str] = None
  176. type: Optional[str] = None
  177. status: Optional[str] = None
  178. gateway: Optional[UUID] = None
  179. gatewayMac: Optional[str] = None
  180. tracker: Optional[UUID] = None
  181. trackerMac: Optional[str] = None
  182. subject: Optional[UUID] = None
  183. subjectName: Optional[str] = None
  184. floor: Optional[UUID] = None
  185. signal: Optional[float] = None
  186. building: Optional[UUID] = None
  187. x: Optional[float] = None
  188. y: Optional[float] = None
  189. z: Optional[float] = None
  190. class TrackerZoneItem(BaseModel):
  191. id: UUID
  192. name: Optional[str] = None
  193. zoneList: List[UUID]
  194. tracker: UUID
  195. days: Optional[str] = None
  196. time: Optional[str] = None
  197. class ConfigItem(BaseModel):
  198. name: str
  199. min: str
  200. max: str
  201. pattern: str
  202. configs:List[str]
  203. propery: List[str]
  204. offset: str
  205. class CoreSettingsItem(BaseModel):
  206. ID: int
  207. current_algorithm: str
  208. location_confidence: int
  209. last_seen_threshold: int
  210. beacon_metric_size: int
  211. HA_send_interval: int
  212. HA_send_changes_only: bool
  213. RSSI_enforce_threshold: bool
  214. RSSI_min_threshold: int
  215. class CoreSettingsUpdateItem(BaseModel):
  216. current_algorithm: str
  217. last_seen_threshold: int
  218. beacon_metric_size: int
  219. HA_send_interval: int
  220. HA_send_changes_only: bool
  221. RSSI_enforce_threshold: bool
  222. RSSI_min_threshold: int
  223. location_confidence: Optional[int] = None
  224. class CalibrationMetadata(BaseModel):
  225. pixel_ratio: float
  226. calibrated: bool
  227. origin: Tuple[int, int]
  228. grid_size: int
  229. #??? Da verificate ???
  230. class DownloadFileImmage():
  231. name : str
  232. immage_path : str