You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

254 lines
6.2 KiB

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