layrz-sdk 3.1.12__py3-none-any.whl → 3.1.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of layrz-sdk might be problematic. Click here for more details.
- layrz_sdk/__init__.py +1 -1
- layrz_sdk/constants.py +5 -5
- layrz_sdk/entities/__init__.py +129 -129
- layrz_sdk/entities/asset.py +60 -60
- layrz_sdk/entities/asset_operation_mode.py +31 -31
- layrz_sdk/entities/broadcast_request.py +12 -12
- layrz_sdk/entities/broadcast_response.py +12 -12
- layrz_sdk/entities/broadcast_result.py +20 -20
- layrz_sdk/entities/broadcast_status.py +28 -28
- layrz_sdk/entities/case.py +48 -48
- layrz_sdk/entities/case_ignored_status.py +26 -26
- layrz_sdk/entities/case_status.py +23 -23
- layrz_sdk/entities/charts/axis_config.py +15 -15
- layrz_sdk/entities/charts/bar_chart.py +175 -175
- layrz_sdk/entities/charts/chart_alignment.py +27 -27
- layrz_sdk/entities/charts/chart_color.py +44 -44
- layrz_sdk/entities/charts/chart_configuration.py +10 -10
- layrz_sdk/entities/charts/chart_data_serie.py +19 -19
- layrz_sdk/entities/charts/chart_data_serie_type.py +28 -28
- layrz_sdk/entities/charts/chart_data_type.py +27 -27
- layrz_sdk/entities/charts/chart_render_technology.py +30 -30
- layrz_sdk/entities/charts/column_chart.py +201 -201
- layrz_sdk/entities/charts/html_chart.py +38 -38
- layrz_sdk/entities/charts/line_chart.py +248 -248
- layrz_sdk/entities/charts/map_center_type.py +22 -22
- layrz_sdk/entities/charts/map_chart.py +108 -108
- layrz_sdk/entities/charts/map_point.py +22 -22
- layrz_sdk/entities/charts/number_chart.py +54 -54
- layrz_sdk/entities/charts/pie_chart.py +131 -131
- layrz_sdk/entities/charts/radar_chart.py +81 -81
- layrz_sdk/entities/charts/radial_bar_chart.py +131 -131
- layrz_sdk/entities/charts/scatter_chart.py +210 -210
- layrz_sdk/entities/charts/scatter_serie.py +13 -13
- layrz_sdk/entities/charts/scatter_serie_item.py +8 -8
- layrz_sdk/entities/charts/table_chart.py +54 -54
- layrz_sdk/entities/charts/table_header.py +8 -8
- layrz_sdk/entities/charts/table_row.py +9 -9
- layrz_sdk/entities/charts/timeline_chart.py +79 -79
- layrz_sdk/entities/charts/timeline_serie.py +10 -10
- layrz_sdk/entities/charts/timeline_serie_item.py +12 -12
- layrz_sdk/entities/checkpoint.py +17 -17
- layrz_sdk/entities/comment.py +16 -16
- layrz_sdk/entities/custom_field.py +10 -10
- layrz_sdk/entities/custom_report_page.py +40 -16
- layrz_sdk/entities/device.py +13 -13
- layrz_sdk/entities/event.py +23 -23
- layrz_sdk/entities/geofence.py +11 -11
- layrz_sdk/entities/last_message.py +12 -12
- layrz_sdk/entities/message.py +23 -23
- layrz_sdk/entities/outbound_service.py +10 -10
- layrz_sdk/entities/position.py +116 -116
- layrz_sdk/entities/presence_type.py +16 -16
- layrz_sdk/entities/report.py +289 -283
- layrz_sdk/entities/report_col.py +40 -40
- layrz_sdk/entities/report_configuration.py +8 -8
- layrz_sdk/entities/report_data_type.py +28 -28
- layrz_sdk/entities/report_format.py +27 -27
- layrz_sdk/entities/report_header.py +43 -43
- layrz_sdk/entities/report_page.py +15 -15
- layrz_sdk/entities/report_row.py +28 -28
- layrz_sdk/entities/sensor.py +11 -11
- layrz_sdk/entities/text_alignment.py +26 -26
- layrz_sdk/entities/trigger.py +11 -11
- layrz_sdk/entities/user.py +10 -10
- layrz_sdk/entities/waypoint.py +18 -18
- layrz_sdk/helpers/__init__.py +5 -5
- layrz_sdk/helpers/color.py +44 -44
- layrz_sdk/lcl/__init__.py +5 -5
- layrz_sdk/lcl/core.py +848 -848
- {layrz_sdk-3.1.12.dist-info → layrz_sdk-3.1.13.dist-info}/METADATA +49 -49
- layrz_sdk-3.1.13.dist-info/RECORD +75 -0
- {layrz_sdk-3.1.12.dist-info → layrz_sdk-3.1.13.dist-info}/WHEEL +1 -1
- {layrz_sdk-3.1.12.dist-info → layrz_sdk-3.1.13.dist-info}/licenses/LICENSE +6 -6
- layrz_sdk-3.1.12.dist-info/RECORD +0 -75
- {layrz_sdk-3.1.12.dist-info → layrz_sdk-3.1.13.dist-info}/top_level.txt +0 -0
layrz_sdk/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
""" Layrz SDK Namespace """
|
|
1
|
+
""" Layrz SDK Namespace """
|
layrz_sdk/constants.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"""Constants"""
|
|
2
|
-
|
|
3
|
-
from zoneinfo import ZoneInfo
|
|
4
|
-
|
|
5
|
-
UTC = ZoneInfo('UTC')
|
|
1
|
+
"""Constants"""
|
|
2
|
+
|
|
3
|
+
from zoneinfo import ZoneInfo
|
|
4
|
+
|
|
5
|
+
UTC = ZoneInfo('UTC')
|
layrz_sdk/entities/__init__.py
CHANGED
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
"""Init file"""
|
|
2
|
-
|
|
3
|
-
from .asset import Asset
|
|
4
|
-
from .asset_operation_mode import AssetOperationMode
|
|
5
|
-
from .broadcast_request import BroadcastRequest
|
|
6
|
-
from .broadcast_response import BroadcastResponse
|
|
7
|
-
from .broadcast_result import BroadcastResult
|
|
8
|
-
from .broadcast_status import BroadcastStatus
|
|
9
|
-
from .case import Case
|
|
10
|
-
from .case_ignored_status import CaseIgnoredStatus
|
|
11
|
-
from .case_status import CaseStatus
|
|
12
|
-
from .charts.axis_config import AxisConfig
|
|
13
|
-
from .charts.bar_chart import BarChart
|
|
14
|
-
from .charts.chart_alignment import ChartAlignment
|
|
15
|
-
from .charts.chart_color import ChartColor
|
|
16
|
-
from .charts.chart_configuration import ChartConfiguration
|
|
17
|
-
from .charts.chart_data_serie import ChartDataSerie
|
|
18
|
-
from .charts.chart_data_serie_type import ChartDataSerieType
|
|
19
|
-
from .charts.chart_data_type import ChartDataType
|
|
20
|
-
from .charts.chart_render_technology import ChartRenderTechnology
|
|
21
|
-
from .charts.column_chart import ColumnChart
|
|
22
|
-
from .charts.html_chart import HTMLChart
|
|
23
|
-
from .charts.line_chart import LineChart
|
|
24
|
-
from .charts.map_center_type import MapCenterType
|
|
25
|
-
from .charts.map_chart import MapChart
|
|
26
|
-
from .charts.map_point import MapPoint
|
|
27
|
-
from .charts.number_chart import NumberChart
|
|
28
|
-
from .charts.pie_chart import PieChart
|
|
29
|
-
from .charts.radar_chart import RadarChart
|
|
30
|
-
from .charts.radial_bar_chart import RadialBarChart
|
|
31
|
-
from .charts.scatter_chart import ScatterChart
|
|
32
|
-
from .charts.scatter_serie import ScatterSerie
|
|
33
|
-
from .charts.scatter_serie_item import ScatterSerieItem
|
|
34
|
-
from .charts.table_chart import TableChart
|
|
35
|
-
from .charts.table_header import TableHeader
|
|
36
|
-
from .charts.table_row import TableRow
|
|
37
|
-
from .charts.timeline_chart import TimelineChart
|
|
38
|
-
from .charts.timeline_serie import TimelineSerie
|
|
39
|
-
from .charts.timeline_serie_item import TimelineSerieItem
|
|
40
|
-
from .checkpoint import Checkpoint
|
|
41
|
-
from .comment import Comment
|
|
42
|
-
from .custom_field import CustomField
|
|
43
|
-
from .custom_report_page import CustomReportPage
|
|
44
|
-
from .device import Device
|
|
45
|
-
from .event import Event
|
|
46
|
-
from .geofence import Geofence
|
|
47
|
-
from .last_message import LastMessage
|
|
48
|
-
from .message import Message
|
|
49
|
-
from .outbound_service import OutboundService
|
|
50
|
-
from .position import Position
|
|
51
|
-
from .presence_type import PresenceType
|
|
52
|
-
from .report import Report
|
|
53
|
-
from .report_col import ReportCol
|
|
54
|
-
from .report_configuration import ReportConfiguration
|
|
55
|
-
from .report_data_type import ReportDataType
|
|
56
|
-
from .report_format import ReportFormat
|
|
57
|
-
from .report_header import ReportHeader
|
|
58
|
-
from .report_page import ReportPage
|
|
59
|
-
from .report_row import ReportRow
|
|
60
|
-
from .sensor import Sensor
|
|
61
|
-
from .text_alignment import TextAlignment
|
|
62
|
-
from .trigger import Trigger
|
|
63
|
-
from .user import User
|
|
64
|
-
from .waypoint import Waypoint
|
|
65
|
-
|
|
66
|
-
__all__ = [
|
|
67
|
-
'Asset',
|
|
68
|
-
'AssetOperationMode',
|
|
69
|
-
'BroadcastRequest',
|
|
70
|
-
'BroadcastResponse',
|
|
71
|
-
'BroadcastResult',
|
|
72
|
-
'BroadcastStatus',
|
|
73
|
-
'Case',
|
|
74
|
-
'CaseIgnoredStatus',
|
|
75
|
-
'CaseStatus',
|
|
76
|
-
'AxisConfig',
|
|
77
|
-
'BarChart',
|
|
78
|
-
'ChartAlignment',
|
|
79
|
-
'ChartColor',
|
|
80
|
-
'ChartConfiguration',
|
|
81
|
-
'ChartDataSerie',
|
|
82
|
-
'ChartDataSerieType',
|
|
83
|
-
'ChartDataType',
|
|
84
|
-
'ChartRenderTechnology',
|
|
85
|
-
'ColumnChart',
|
|
86
|
-
'HTMLChart',
|
|
87
|
-
'LineChart',
|
|
88
|
-
'MapCenterType',
|
|
89
|
-
'MapChart',
|
|
90
|
-
'MapPoint',
|
|
91
|
-
'NumberChart',
|
|
92
|
-
'PieChart',
|
|
93
|
-
'RadarChart',
|
|
94
|
-
'RadialBarChart',
|
|
95
|
-
'ScatterChart',
|
|
96
|
-
'ScatterSerie',
|
|
97
|
-
'ScatterSerieItem',
|
|
98
|
-
'TableChart',
|
|
99
|
-
'TableHeader',
|
|
100
|
-
'TableRow',
|
|
101
|
-
'TimelineChart',
|
|
102
|
-
'TimelineSerie',
|
|
103
|
-
'TimelineSerieItem',
|
|
104
|
-
'Checkpoint',
|
|
105
|
-
'Comment',
|
|
106
|
-
'CustomField',
|
|
107
|
-
'CustomReportPage',
|
|
108
|
-
'Device',
|
|
109
|
-
'Event',
|
|
110
|
-
'Geofence',
|
|
111
|
-
'LastMessage',
|
|
112
|
-
'Message',
|
|
113
|
-
'OutboundService',
|
|
114
|
-
'Position',
|
|
115
|
-
'PresenceType',
|
|
116
|
-
'Report',
|
|
117
|
-
'ReportCol',
|
|
118
|
-
'ReportConfiguration',
|
|
119
|
-
'ReportDataType',
|
|
120
|
-
'ReportFormat',
|
|
121
|
-
'ReportHeader',
|
|
122
|
-
'ReportPage',
|
|
123
|
-
'ReportRow',
|
|
124
|
-
'Sensor',
|
|
125
|
-
'TextAlignment',
|
|
126
|
-
'Trigger',
|
|
127
|
-
'User',
|
|
128
|
-
'Waypoint',
|
|
129
|
-
]
|
|
1
|
+
"""Init file"""
|
|
2
|
+
|
|
3
|
+
from .asset import Asset
|
|
4
|
+
from .asset_operation_mode import AssetOperationMode
|
|
5
|
+
from .broadcast_request import BroadcastRequest
|
|
6
|
+
from .broadcast_response import BroadcastResponse
|
|
7
|
+
from .broadcast_result import BroadcastResult
|
|
8
|
+
from .broadcast_status import BroadcastStatus
|
|
9
|
+
from .case import Case
|
|
10
|
+
from .case_ignored_status import CaseIgnoredStatus
|
|
11
|
+
from .case_status import CaseStatus
|
|
12
|
+
from .charts.axis_config import AxisConfig
|
|
13
|
+
from .charts.bar_chart import BarChart
|
|
14
|
+
from .charts.chart_alignment import ChartAlignment
|
|
15
|
+
from .charts.chart_color import ChartColor
|
|
16
|
+
from .charts.chart_configuration import ChartConfiguration
|
|
17
|
+
from .charts.chart_data_serie import ChartDataSerie
|
|
18
|
+
from .charts.chart_data_serie_type import ChartDataSerieType
|
|
19
|
+
from .charts.chart_data_type import ChartDataType
|
|
20
|
+
from .charts.chart_render_technology import ChartRenderTechnology
|
|
21
|
+
from .charts.column_chart import ColumnChart
|
|
22
|
+
from .charts.html_chart import HTMLChart
|
|
23
|
+
from .charts.line_chart import LineChart
|
|
24
|
+
from .charts.map_center_type import MapCenterType
|
|
25
|
+
from .charts.map_chart import MapChart
|
|
26
|
+
from .charts.map_point import MapPoint
|
|
27
|
+
from .charts.number_chart import NumberChart
|
|
28
|
+
from .charts.pie_chart import PieChart
|
|
29
|
+
from .charts.radar_chart import RadarChart
|
|
30
|
+
from .charts.radial_bar_chart import RadialBarChart
|
|
31
|
+
from .charts.scatter_chart import ScatterChart
|
|
32
|
+
from .charts.scatter_serie import ScatterSerie
|
|
33
|
+
from .charts.scatter_serie_item import ScatterSerieItem
|
|
34
|
+
from .charts.table_chart import TableChart
|
|
35
|
+
from .charts.table_header import TableHeader
|
|
36
|
+
from .charts.table_row import TableRow
|
|
37
|
+
from .charts.timeline_chart import TimelineChart
|
|
38
|
+
from .charts.timeline_serie import TimelineSerie
|
|
39
|
+
from .charts.timeline_serie_item import TimelineSerieItem
|
|
40
|
+
from .checkpoint import Checkpoint
|
|
41
|
+
from .comment import Comment
|
|
42
|
+
from .custom_field import CustomField
|
|
43
|
+
from .custom_report_page import CustomReportPage
|
|
44
|
+
from .device import Device
|
|
45
|
+
from .event import Event
|
|
46
|
+
from .geofence import Geofence
|
|
47
|
+
from .last_message import LastMessage
|
|
48
|
+
from .message import Message
|
|
49
|
+
from .outbound_service import OutboundService
|
|
50
|
+
from .position import Position
|
|
51
|
+
from .presence_type import PresenceType
|
|
52
|
+
from .report import Report
|
|
53
|
+
from .report_col import ReportCol
|
|
54
|
+
from .report_configuration import ReportConfiguration
|
|
55
|
+
from .report_data_type import ReportDataType
|
|
56
|
+
from .report_format import ReportFormat
|
|
57
|
+
from .report_header import ReportHeader
|
|
58
|
+
from .report_page import ReportPage
|
|
59
|
+
from .report_row import ReportRow
|
|
60
|
+
from .sensor import Sensor
|
|
61
|
+
from .text_alignment import TextAlignment
|
|
62
|
+
from .trigger import Trigger
|
|
63
|
+
from .user import User
|
|
64
|
+
from .waypoint import Waypoint
|
|
65
|
+
|
|
66
|
+
__all__ = [
|
|
67
|
+
'Asset',
|
|
68
|
+
'AssetOperationMode',
|
|
69
|
+
'BroadcastRequest',
|
|
70
|
+
'BroadcastResponse',
|
|
71
|
+
'BroadcastResult',
|
|
72
|
+
'BroadcastStatus',
|
|
73
|
+
'Case',
|
|
74
|
+
'CaseIgnoredStatus',
|
|
75
|
+
'CaseStatus',
|
|
76
|
+
'AxisConfig',
|
|
77
|
+
'BarChart',
|
|
78
|
+
'ChartAlignment',
|
|
79
|
+
'ChartColor',
|
|
80
|
+
'ChartConfiguration',
|
|
81
|
+
'ChartDataSerie',
|
|
82
|
+
'ChartDataSerieType',
|
|
83
|
+
'ChartDataType',
|
|
84
|
+
'ChartRenderTechnology',
|
|
85
|
+
'ColumnChart',
|
|
86
|
+
'HTMLChart',
|
|
87
|
+
'LineChart',
|
|
88
|
+
'MapCenterType',
|
|
89
|
+
'MapChart',
|
|
90
|
+
'MapPoint',
|
|
91
|
+
'NumberChart',
|
|
92
|
+
'PieChart',
|
|
93
|
+
'RadarChart',
|
|
94
|
+
'RadialBarChart',
|
|
95
|
+
'ScatterChart',
|
|
96
|
+
'ScatterSerie',
|
|
97
|
+
'ScatterSerieItem',
|
|
98
|
+
'TableChart',
|
|
99
|
+
'TableHeader',
|
|
100
|
+
'TableRow',
|
|
101
|
+
'TimelineChart',
|
|
102
|
+
'TimelineSerie',
|
|
103
|
+
'TimelineSerieItem',
|
|
104
|
+
'Checkpoint',
|
|
105
|
+
'Comment',
|
|
106
|
+
'CustomField',
|
|
107
|
+
'CustomReportPage',
|
|
108
|
+
'Device',
|
|
109
|
+
'Event',
|
|
110
|
+
'Geofence',
|
|
111
|
+
'LastMessage',
|
|
112
|
+
'Message',
|
|
113
|
+
'OutboundService',
|
|
114
|
+
'Position',
|
|
115
|
+
'PresenceType',
|
|
116
|
+
'Report',
|
|
117
|
+
'ReportCol',
|
|
118
|
+
'ReportConfiguration',
|
|
119
|
+
'ReportDataType',
|
|
120
|
+
'ReportFormat',
|
|
121
|
+
'ReportHeader',
|
|
122
|
+
'ReportPage',
|
|
123
|
+
'ReportRow',
|
|
124
|
+
'Sensor',
|
|
125
|
+
'TextAlignment',
|
|
126
|
+
'Trigger',
|
|
127
|
+
'User',
|
|
128
|
+
'Waypoint',
|
|
129
|
+
]
|
layrz_sdk/entities/asset.py
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
"""Asset Entity"""
|
|
2
|
-
|
|
3
|
-
import sys
|
|
4
|
-
from typing import Any, Optional
|
|
5
|
-
|
|
6
|
-
from pydantic import BaseModel, Field, model_validator
|
|
7
|
-
|
|
8
|
-
if sys.version_info >= (3, 11):
|
|
9
|
-
from typing import Self
|
|
10
|
-
else:
|
|
11
|
-
from typing_extensions import Self
|
|
12
|
-
|
|
13
|
-
from .asset_operation_mode import AssetOperationMode
|
|
14
|
-
from .custom_field import CustomField
|
|
15
|
-
from .device import Device
|
|
16
|
-
from .sensor import Sensor
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Asset(BaseModel):
|
|
20
|
-
"""Asset entity definition"""
|
|
21
|
-
|
|
22
|
-
pk: int = Field(description='Defines the primary key of the asset')
|
|
23
|
-
name: str = Field(description='Defines the name of the asset')
|
|
24
|
-
vin: Optional[str] = Field(
|
|
25
|
-
default=None,
|
|
26
|
-
description='Defines the serial number of the asset, may be an VIN, or any other unique identifier',
|
|
27
|
-
)
|
|
28
|
-
plate: Optional[str] = Field(default=None, description='Defines the plate number of the asset')
|
|
29
|
-
asset_type: Optional[int] = Field(description='Defines the type of the asset', alias='kind_id', default=None)
|
|
30
|
-
operation_mode: AssetOperationMode = Field(description='Defines the operation mode of the asset')
|
|
31
|
-
sensors: list[Sensor] = Field(default_factory=list, description='Defines the list of sensors of the asset')
|
|
32
|
-
custom_fields: list[CustomField] = Field(
|
|
33
|
-
default_factory=list, description='Defines the list of custom fields of the asset'
|
|
34
|
-
)
|
|
35
|
-
devices: list[Device] = Field(default_factory=list, description='Defines the list of devices of the asset')
|
|
36
|
-
children: list[Self] = Field(default_factory=list, description='Defines the list of children of the asset')
|
|
37
|
-
|
|
38
|
-
@model_validator(mode='before')
|
|
39
|
-
def _validate_model(cls: Self, data: dict[str, Any]) -> dict[str, Any]:
|
|
40
|
-
"""Validate model"""
|
|
41
|
-
operation_mode: Optional[str] = data.get('operation_mode')
|
|
42
|
-
if operation_mode == AssetOperationMode.ASSETMULTIPLE.name:
|
|
43
|
-
data['devices'] = []
|
|
44
|
-
|
|
45
|
-
else:
|
|
46
|
-
data['children'] = []
|
|
47
|
-
|
|
48
|
-
return data
|
|
49
|
-
|
|
50
|
-
@property
|
|
51
|
-
def primary(self: Self) -> Optional[Device]:
|
|
52
|
-
"""Get primary device"""
|
|
53
|
-
if self.operation_mode not in [AssetOperationMode.SINGLE, AssetOperationMode.MULTIPLE]:
|
|
54
|
-
return None
|
|
55
|
-
|
|
56
|
-
for device in self.devices:
|
|
57
|
-
if device.is_primary:
|
|
58
|
-
return device
|
|
59
|
-
|
|
60
|
-
return None
|
|
1
|
+
"""Asset Entity"""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
from typing import Any, Optional
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel, Field, model_validator
|
|
7
|
+
|
|
8
|
+
if sys.version_info >= (3, 11):
|
|
9
|
+
from typing import Self
|
|
10
|
+
else:
|
|
11
|
+
from typing_extensions import Self
|
|
12
|
+
|
|
13
|
+
from .asset_operation_mode import AssetOperationMode
|
|
14
|
+
from .custom_field import CustomField
|
|
15
|
+
from .device import Device
|
|
16
|
+
from .sensor import Sensor
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Asset(BaseModel):
|
|
20
|
+
"""Asset entity definition"""
|
|
21
|
+
|
|
22
|
+
pk: int = Field(description='Defines the primary key of the asset')
|
|
23
|
+
name: str = Field(description='Defines the name of the asset')
|
|
24
|
+
vin: Optional[str] = Field(
|
|
25
|
+
default=None,
|
|
26
|
+
description='Defines the serial number of the asset, may be an VIN, or any other unique identifier',
|
|
27
|
+
)
|
|
28
|
+
plate: Optional[str] = Field(default=None, description='Defines the plate number of the asset')
|
|
29
|
+
asset_type: Optional[int] = Field(description='Defines the type of the asset', alias='kind_id', default=None)
|
|
30
|
+
operation_mode: AssetOperationMode = Field(description='Defines the operation mode of the asset')
|
|
31
|
+
sensors: list[Sensor] = Field(default_factory=list, description='Defines the list of sensors of the asset')
|
|
32
|
+
custom_fields: list[CustomField] = Field(
|
|
33
|
+
default_factory=list, description='Defines the list of custom fields of the asset'
|
|
34
|
+
)
|
|
35
|
+
devices: list[Device] = Field(default_factory=list, description='Defines the list of devices of the asset')
|
|
36
|
+
children: list[Self] = Field(default_factory=list, description='Defines the list of children of the asset')
|
|
37
|
+
|
|
38
|
+
@model_validator(mode='before')
|
|
39
|
+
def _validate_model(cls: Self, data: dict[str, Any]) -> dict[str, Any]:
|
|
40
|
+
"""Validate model"""
|
|
41
|
+
operation_mode: Optional[str] = data.get('operation_mode')
|
|
42
|
+
if operation_mode == AssetOperationMode.ASSETMULTIPLE.name:
|
|
43
|
+
data['devices'] = []
|
|
44
|
+
|
|
45
|
+
else:
|
|
46
|
+
data['children'] = []
|
|
47
|
+
|
|
48
|
+
return data
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def primary(self: Self) -> Optional[Device]:
|
|
52
|
+
"""Get primary device"""
|
|
53
|
+
if self.operation_mode not in [AssetOperationMode.SINGLE, AssetOperationMode.MULTIPLE]:
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
for device in self.devices:
|
|
57
|
+
if device.is_primary:
|
|
58
|
+
return device
|
|
59
|
+
|
|
60
|
+
return None
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
"""Asset Operation Mode"""
|
|
2
|
-
|
|
3
|
-
import sys
|
|
4
|
-
from enum import Enum
|
|
5
|
-
|
|
6
|
-
if sys.version_info >= (3, 11):
|
|
7
|
-
from typing import Self
|
|
8
|
-
else:
|
|
9
|
-
from typing_extensions import Self
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class AssetOperationMode(Enum):
|
|
13
|
-
"""
|
|
14
|
-
Asset Operation mode definition
|
|
15
|
-
It's an enum of the operation mode of the asset.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
SINGLE = 'SINGLE'
|
|
19
|
-
MULTIPLE = 'MULTIPLE'
|
|
20
|
-
ASSETMULTIPLE = 'ASSETMULTIPLE'
|
|
21
|
-
DISCONNECTED = 'DISCONNECTED'
|
|
22
|
-
STATIC = 'STATIC'
|
|
23
|
-
ZONE = 'ZONE'
|
|
24
|
-
|
|
25
|
-
def __str__(self: Self) -> str:
|
|
26
|
-
"""Readable property"""
|
|
27
|
-
return self.name
|
|
28
|
-
|
|
29
|
-
def __repr__(self: Self) -> str:
|
|
30
|
-
"""Readable property"""
|
|
31
|
-
return f'AssetOperationMode.{self.name}'
|
|
1
|
+
"""Asset Operation Mode"""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
from enum import Enum
|
|
5
|
+
|
|
6
|
+
if sys.version_info >= (3, 11):
|
|
7
|
+
from typing import Self
|
|
8
|
+
else:
|
|
9
|
+
from typing_extensions import Self
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AssetOperationMode(Enum):
|
|
13
|
+
"""
|
|
14
|
+
Asset Operation mode definition
|
|
15
|
+
It's an enum of the operation mode of the asset.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SINGLE = 'SINGLE'
|
|
19
|
+
MULTIPLE = 'MULTIPLE'
|
|
20
|
+
ASSETMULTIPLE = 'ASSETMULTIPLE'
|
|
21
|
+
DISCONNECTED = 'DISCONNECTED'
|
|
22
|
+
STATIC = 'STATIC'
|
|
23
|
+
ZONE = 'ZONE'
|
|
24
|
+
|
|
25
|
+
def __str__(self: Self) -> str:
|
|
26
|
+
"""Readable property"""
|
|
27
|
+
return self.name
|
|
28
|
+
|
|
29
|
+
def __repr__(self: Self) -> str:
|
|
30
|
+
"""Readable property"""
|
|
31
|
+
return f'AssetOperationMode.{self.name}'
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"""Broadcast Result Request data"""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, Field
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class BroadcastRequest(BaseModel):
|
|
9
|
-
"""Broadcast request data"""
|
|
10
|
-
|
|
11
|
-
parsed: Any = Field(description='Parsed data')
|
|
12
|
-
raw: str = Field(description='Raw data')
|
|
1
|
+
"""Broadcast Result Request data"""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BroadcastRequest(BaseModel):
|
|
9
|
+
"""Broadcast request data"""
|
|
10
|
+
|
|
11
|
+
parsed: Any = Field(description='Parsed data')
|
|
12
|
+
raw: str = Field(description='Raw data')
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"""Broadcast Result Response data"""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, Field
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class BroadcastResponse(BaseModel):
|
|
9
|
-
"""Broadcast response data"""
|
|
10
|
-
|
|
11
|
-
parsed: Any = Field(description='Parsed data')
|
|
12
|
-
raw: str = Field(description='Raw data')
|
|
1
|
+
"""Broadcast Result Response data"""
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BroadcastResponse(BaseModel):
|
|
9
|
+
"""Broadcast response data"""
|
|
10
|
+
|
|
11
|
+
parsed: Any = Field(description='Parsed data')
|
|
12
|
+
raw: str = Field(description='Raw data')
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
"""Broadcast result"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
|
|
5
|
-
from pydantic import BaseModel, Field
|
|
6
|
-
|
|
7
|
-
from .broadcast_request import BroadcastRequest
|
|
8
|
-
from .broadcast_response import BroadcastResponse
|
|
9
|
-
from .broadcast_status import BroadcastStatus
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class BroadcastResult(BaseModel):
|
|
13
|
-
"""Broadcast result data"""
|
|
14
|
-
|
|
15
|
-
service_id: int = Field(description='Service ID')
|
|
16
|
-
asset_id: int = Field(description='Asset ID')
|
|
17
|
-
status: BroadcastStatus = Field(description='Broadcast status')
|
|
18
|
-
request: BroadcastRequest = Field(description='Broadcast request')
|
|
19
|
-
response: BroadcastResponse = Field(description='Broadcast response')
|
|
20
|
-
submitted_at: datetime = Field(description='Broadcast submission date')
|
|
1
|
+
"""Broadcast result"""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
from .broadcast_request import BroadcastRequest
|
|
8
|
+
from .broadcast_response import BroadcastResponse
|
|
9
|
+
from .broadcast_status import BroadcastStatus
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BroadcastResult(BaseModel):
|
|
13
|
+
"""Broadcast result data"""
|
|
14
|
+
|
|
15
|
+
service_id: int = Field(description='Service ID')
|
|
16
|
+
asset_id: int = Field(description='Asset ID')
|
|
17
|
+
status: BroadcastStatus = Field(description='Broadcast status')
|
|
18
|
+
request: BroadcastRequest = Field(description='Broadcast request')
|
|
19
|
+
response: BroadcastResponse = Field(description='Broadcast response')
|
|
20
|
+
submitted_at: datetime = Field(description='Broadcast submission date')
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
"""Broadcast result Status"""
|
|
2
|
-
|
|
3
|
-
import sys
|
|
4
|
-
from enum import Enum
|
|
5
|
-
|
|
6
|
-
if sys.version_info >= (3, 11):
|
|
7
|
-
from typing import Self
|
|
8
|
-
else:
|
|
9
|
-
from typing_extensions import Self
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class BroadcastStatus(Enum):
|
|
13
|
-
"""Broadcast result status"""
|
|
14
|
-
|
|
15
|
-
OK = 'OK'
|
|
16
|
-
BADREQUEST = 'BADREQUEST'
|
|
17
|
-
INTERNALERROR = 'INTERNALERROR'
|
|
18
|
-
UNAUTHORIZED = 'UNAUTHORIZED'
|
|
19
|
-
UNPROCESSABLE = 'UNPROCESSABLE'
|
|
20
|
-
DISCONNECTED = 'DISCONNECTED'
|
|
21
|
-
|
|
22
|
-
def __str__(self: Self) -> str:
|
|
23
|
-
"""Readable property"""
|
|
24
|
-
return self.name
|
|
25
|
-
|
|
26
|
-
def __repr__(self: Self) -> str:
|
|
27
|
-
"""Readable property"""
|
|
28
|
-
return f'BroadcastStatus.{self.name}'
|
|
1
|
+
"""Broadcast result Status"""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
from enum import Enum
|
|
5
|
+
|
|
6
|
+
if sys.version_info >= (3, 11):
|
|
7
|
+
from typing import Self
|
|
8
|
+
else:
|
|
9
|
+
from typing_extensions import Self
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BroadcastStatus(Enum):
|
|
13
|
+
"""Broadcast result status"""
|
|
14
|
+
|
|
15
|
+
OK = 'OK'
|
|
16
|
+
BADREQUEST = 'BADREQUEST'
|
|
17
|
+
INTERNALERROR = 'INTERNALERROR'
|
|
18
|
+
UNAUTHORIZED = 'UNAUTHORIZED'
|
|
19
|
+
UNPROCESSABLE = 'UNPROCESSABLE'
|
|
20
|
+
DISCONNECTED = 'DISCONNECTED'
|
|
21
|
+
|
|
22
|
+
def __str__(self: Self) -> str:
|
|
23
|
+
"""Readable property"""
|
|
24
|
+
return self.name
|
|
25
|
+
|
|
26
|
+
def __repr__(self: Self) -> str:
|
|
27
|
+
"""Readable property"""
|
|
28
|
+
return f'BroadcastStatus.{self.name}'
|