layrz-sdk 3.0.13__py3-none-any.whl → 3.1.0__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 -0
- layrz_sdk/entities/__init__.py +129 -73
- layrz_sdk/entities/asset.py +71 -0
- layrz_sdk/entities/{general/asset_operation_mode.py → asset_operation_mode.py} +31 -30
- layrz_sdk/entities/broadcast_request.py +12 -0
- layrz_sdk/entities/broadcast_response.py +12 -0
- layrz_sdk/entities/broadcast_result.py +20 -0
- layrz_sdk/entities/{broadcasts/status.py → broadcast_status.py} +28 -27
- layrz_sdk/entities/case.py +47 -0
- layrz_sdk/entities/case_ignored_status.py +26 -0
- layrz_sdk/entities/case_status.py +23 -0
- layrz_sdk/entities/charts/axis_config.py +15 -0
- layrz_sdk/entities/charts/{bar.py → bar_chart.py} +171 -208
- layrz_sdk/entities/charts/chart_alignment.py +27 -0
- layrz_sdk/entities/charts/chart_color.py +44 -0
- layrz_sdk/entities/charts/chart_configuration.py +10 -0
- layrz_sdk/entities/charts/chart_data_serie.py +19 -0
- layrz_sdk/entities/charts/chart_data_serie_type.py +28 -0
- layrz_sdk/entities/charts/chart_data_type.py +27 -0
- layrz_sdk/entities/charts/{render_technology.py → chart_render_technology.py} +30 -29
- layrz_sdk/entities/charts/{column.py → column_chart.py} +197 -236
- layrz_sdk/entities/charts/html_chart.py +34 -0
- layrz_sdk/entities/charts/{line.py → line_chart.py} +244 -282
- layrz_sdk/entities/charts/map_center_type.py +22 -0
- layrz_sdk/entities/charts/map_chart.py +104 -0
- layrz_sdk/entities/charts/map_point.py +22 -0
- layrz_sdk/entities/charts/number_chart.py +50 -0
- layrz_sdk/entities/charts/{pie.py → pie_chart.py} +127 -148
- layrz_sdk/entities/charts/radar_chart.py +77 -0
- layrz_sdk/entities/charts/{radial_bar.py → radial_bar_chart.py} +127 -148
- layrz_sdk/entities/charts/{scatter.py → scatter_chart.py} +206 -290
- layrz_sdk/entities/charts/scatter_serie.py +15 -0
- layrz_sdk/entities/charts/scatter_serie_item.py +8 -0
- layrz_sdk/entities/charts/table_chart.py +50 -0
- layrz_sdk/entities/charts/table_header.py +8 -0
- layrz_sdk/entities/charts/table_row.py +9 -0
- layrz_sdk/entities/charts/timeline_chart.py +75 -0
- layrz_sdk/entities/charts/timeline_serie.py +12 -0
- layrz_sdk/entities/charts/timeline_serie_item.py +12 -0
- layrz_sdk/entities/checkpoint.py +18 -0
- layrz_sdk/entities/comment.py +16 -0
- layrz_sdk/entities/custom_field.py +10 -0
- layrz_sdk/entities/custom_report_page.py +16 -0
- layrz_sdk/entities/device.py +13 -0
- layrz_sdk/entities/event.py +23 -0
- layrz_sdk/entities/geofence.py +11 -0
- layrz_sdk/entities/last_message.py +12 -0
- layrz_sdk/entities/message.py +23 -0
- layrz_sdk/entities/outbound_service.py +10 -0
- layrz_sdk/entities/position.py +101 -0
- layrz_sdk/entities/presence_type.py +16 -0
- layrz_sdk/entities/{reports/report.py → report.py} +257 -286
- layrz_sdk/entities/report_col.py +40 -0
- layrz_sdk/entities/report_configuration.py +8 -0
- layrz_sdk/entities/report_data_type.py +28 -0
- layrz_sdk/entities/{reports/format.py → report_format.py} +27 -26
- layrz_sdk/entities/report_header.py +43 -0
- layrz_sdk/entities/report_page.py +17 -0
- layrz_sdk/entities/report_row.py +28 -0
- layrz_sdk/entities/sensor.py +11 -0
- layrz_sdk/entities/{formatting/text_align.py → text_alignment.py} +26 -25
- layrz_sdk/entities/trigger.py +11 -0
- layrz_sdk/entities/user.py +10 -0
- layrz_sdk/entities/waypoint.py +18 -0
- layrz_sdk/helpers/__init__.py +8 -2
- layrz_sdk/helpers/color.py +41 -45
- layrz_sdk/lcl/__init__.py +7 -2
- layrz_sdk/lcl/core.py +832 -813
- layrz_sdk/py.typed +0 -0
- {layrz_sdk-3.0.13.dist-info → layrz_sdk-3.1.0.dist-info}/LICENSE +6 -6
- {layrz_sdk-3.0.13.dist-info → layrz_sdk-3.1.0.dist-info}/METADATA +48 -45
- layrz_sdk-3.1.0.dist-info/RECORD +75 -0
- {layrz_sdk-3.0.13.dist-info → layrz_sdk-3.1.0.dist-info}/WHEEL +1 -1
- layrz_sdk/entities/broadcasts/__init__.py +0 -6
- layrz_sdk/entities/broadcasts/request.py +0 -30
- layrz_sdk/entities/broadcasts/response.py +0 -30
- layrz_sdk/entities/broadcasts/result.py +0 -53
- layrz_sdk/entities/broadcasts/service.py +0 -28
- layrz_sdk/entities/cases/__init__.py +0 -4
- layrz_sdk/entities/cases/case.py +0 -120
- layrz_sdk/entities/cases/comment.py +0 -37
- layrz_sdk/entities/cases/trigger.py +0 -31
- layrz_sdk/entities/charts/__init__.py +0 -21
- layrz_sdk/entities/charts/alignment.py +0 -26
- layrz_sdk/entities/charts/color.py +0 -38
- layrz_sdk/entities/charts/configuration.py +0 -54
- layrz_sdk/entities/charts/data_type.py +0 -26
- layrz_sdk/entities/charts/exceptions.py +0 -29
- layrz_sdk/entities/charts/html.py +0 -44
- layrz_sdk/entities/charts/map.py +0 -179
- layrz_sdk/entities/charts/number.py +0 -52
- layrz_sdk/entities/charts/radar.py +0 -102
- layrz_sdk/entities/charts/serie.py +0 -56
- layrz_sdk/entities/charts/serie_type.py +0 -27
- layrz_sdk/entities/charts/table.py +0 -74
- layrz_sdk/entities/charts/timeline.py +0 -148
- layrz_sdk/entities/checkpoints/__init__.py +0 -4
- layrz_sdk/entities/checkpoints/checkpoint.py +0 -50
- layrz_sdk/entities/checkpoints/waypoint.py +0 -52
- layrz_sdk/entities/events/__init__.py +0 -2
- layrz_sdk/entities/events/event.py +0 -58
- layrz_sdk/entities/formatting/__init__.py +0 -2
- layrz_sdk/entities/general/__init__.py +0 -9
- layrz_sdk/entities/general/asset.py +0 -72
- layrz_sdk/entities/general/custom_field.py +0 -29
- layrz_sdk/entities/general/device.py +0 -45
- layrz_sdk/entities/general/geofence.py +0 -53
- layrz_sdk/entities/general/sensor.py +0 -31
- layrz_sdk/entities/general/user.py +0 -29
- layrz_sdk/entities/repcom/__init__.py +0 -2
- layrz_sdk/entities/repcom/transaction.py +0 -54
- layrz_sdk/entities/reports/__init__.py +0 -7
- layrz_sdk/entities/reports/col.py +0 -86
- layrz_sdk/entities/reports/header.py +0 -57
- layrz_sdk/entities/reports/page.py +0 -64
- layrz_sdk/entities/reports/row.py +0 -43
- layrz_sdk/entities/telemetry/__init__.py +0 -5
- layrz_sdk/entities/telemetry/last_message.py +0 -41
- layrz_sdk/entities/telemetry/message.py +0 -37
- layrz_sdk/entities/telemetry/position.py +0 -51
- layrz_sdk-3.0.13.dist-info/RECORD +0 -70
- {layrz_sdk-3.0.13.dist-info → layrz_sdk-3.1.0.dist-info}/top_level.txt +0 -0
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"""Timeline chart entities"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
from typing import Any, List
|
|
5
|
-
|
|
6
|
-
from .alignment import ChartAlignment
|
|
7
|
-
from .exceptions import ChartException
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class TimelineSerieItem:
|
|
11
|
-
"""
|
|
12
|
-
Chart Data Serie Item for Timeline Charts
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
def __init__(self, name: str, start_at: datetime, end_at: datetime, color: str) -> None:
|
|
16
|
-
"""
|
|
17
|
-
Constructor
|
|
18
|
-
----
|
|
19
|
-
Arguments
|
|
20
|
-
- name : Name of the item.
|
|
21
|
-
- start_at : Start date of the item.
|
|
22
|
-
- end_at : End date of the item.
|
|
23
|
-
- color : Color of the item.
|
|
24
|
-
"""
|
|
25
|
-
if not isinstance(name, str):
|
|
26
|
-
raise ChartException('name must be an instance of str')
|
|
27
|
-
self.name = name
|
|
28
|
-
|
|
29
|
-
if not isinstance(start_at, datetime):
|
|
30
|
-
raise ChartException('start_at must be an instance of datetime')
|
|
31
|
-
self.start_at = start_at
|
|
32
|
-
|
|
33
|
-
if not isinstance(end_at, datetime):
|
|
34
|
-
raise ChartException('end_at must be an instance of datetime')
|
|
35
|
-
self.end_at = end_at
|
|
36
|
-
|
|
37
|
-
if not isinstance(color, str):
|
|
38
|
-
raise ChartException('color must be an instance of str')
|
|
39
|
-
self.color = color
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class TimelineSerie:
|
|
43
|
-
"""
|
|
44
|
-
Chart Data Serie for Timeline charts
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
def __init__(self, data: List[TimelineSerieItem], label: str) -> None:
|
|
48
|
-
"""
|
|
49
|
-
Constructor
|
|
50
|
-
----
|
|
51
|
-
Arguments
|
|
52
|
-
- data : List of data points.
|
|
53
|
-
- label : Label of the serie.
|
|
54
|
-
"""
|
|
55
|
-
for i, datum in enumerate(data):
|
|
56
|
-
if not isinstance(datum, TimelineSerieItem):
|
|
57
|
-
raise ChartException(f'Y Axis serie {i} must be an instance of ChartDataSerie')
|
|
58
|
-
self.data = data
|
|
59
|
-
|
|
60
|
-
if not isinstance(label, str):
|
|
61
|
-
raise ChartException('label must be an instance of str')
|
|
62
|
-
self.label = label
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class TimelineChart:
|
|
66
|
-
"""
|
|
67
|
-
Timeline chart configuration
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
def __init__(
|
|
71
|
-
self,
|
|
72
|
-
series: List[TimelineSerie],
|
|
73
|
-
title: str = 'Chart',
|
|
74
|
-
align: ChartAlignment = ChartAlignment.CENTER,
|
|
75
|
-
) -> None:
|
|
76
|
-
"""
|
|
77
|
-
Constructor
|
|
78
|
-
----
|
|
79
|
-
Arguments
|
|
80
|
-
- series : Defines the series of the chart, uses the TimelineSerie class.
|
|
81
|
-
Please read the documentation to more information.
|
|
82
|
-
- title : Title of the chart.
|
|
83
|
-
- align : Alignment of the chart.
|
|
84
|
-
"""
|
|
85
|
-
for i, serie in enumerate(series):
|
|
86
|
-
if not isinstance(serie, TimelineSerie):
|
|
87
|
-
raise ChartException(f'Y Axis serie {i} must be an instance of TimelineSerie')
|
|
88
|
-
self.series = series
|
|
89
|
-
|
|
90
|
-
if not isinstance(title, str):
|
|
91
|
-
raise ChartException('title must be an instance of str')
|
|
92
|
-
self.title = title
|
|
93
|
-
|
|
94
|
-
if not isinstance(align, ChartAlignment):
|
|
95
|
-
raise ChartException('align must be an instance of ChartAlignment')
|
|
96
|
-
self.align = align
|
|
97
|
-
|
|
98
|
-
def render(self) -> Any:
|
|
99
|
-
"""
|
|
100
|
-
Render chart to a Javascript Library.
|
|
101
|
-
Currently only available for ApexCharts.
|
|
102
|
-
"""
|
|
103
|
-
return {'library': 'APEXCHARTS', 'configuration': self._render_apexcharts()}
|
|
104
|
-
|
|
105
|
-
def _render_apexcharts(self) -> Any:
|
|
106
|
-
"""
|
|
107
|
-
Converts the configuration of the chart to Javascript library ApexCharts.
|
|
108
|
-
"""
|
|
109
|
-
|
|
110
|
-
series = []
|
|
111
|
-
|
|
112
|
-
for serie in self.series:
|
|
113
|
-
data = []
|
|
114
|
-
|
|
115
|
-
for item in serie.data:
|
|
116
|
-
data.append(
|
|
117
|
-
{
|
|
118
|
-
'x': item.name,
|
|
119
|
-
'y': [item.start_at.timestamp() * 1000, item.end_at.timestamp() * 1000],
|
|
120
|
-
'fillColor': item.color,
|
|
121
|
-
}
|
|
122
|
-
)
|
|
123
|
-
|
|
124
|
-
series.append({'name': serie.label, 'data': data})
|
|
125
|
-
|
|
126
|
-
config = {
|
|
127
|
-
'series': series,
|
|
128
|
-
'title': {
|
|
129
|
-
'text': self.title,
|
|
130
|
-
'align': self.align.value,
|
|
131
|
-
'style': {'fontFamily': 'Fira Sans Condensed', 'fontSize': '20px', 'fontWeight': 'normal'},
|
|
132
|
-
},
|
|
133
|
-
'chart': {
|
|
134
|
-
'type': 'rangeBar',
|
|
135
|
-
'animations': {'enabled': False},
|
|
136
|
-
'toolbar': {'show': False},
|
|
137
|
-
'zoom': {'enabled': False},
|
|
138
|
-
},
|
|
139
|
-
'xaxis': {'type': 'datetime'},
|
|
140
|
-
'plotOptions': {
|
|
141
|
-
'bar': {
|
|
142
|
-
'horizontal': True,
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
'dataLabels': {'enabled': True},
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return config
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"""Checkpoints entitites"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
from typing import List
|
|
5
|
-
|
|
6
|
-
from .waypoint import Waypoint
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Checkpoint:
|
|
10
|
-
"""
|
|
11
|
-
Checkpoint entity definition
|
|
12
|
-
---
|
|
13
|
-
Attributes
|
|
14
|
-
- pk : Checkpoint activation ID
|
|
15
|
-
- asset_id : Asset ID
|
|
16
|
-
- waypoints : List of waypoints of the checkpoint
|
|
17
|
-
- start_at : Start date
|
|
18
|
-
- end_at : End date
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
def __init__(
|
|
22
|
-
self,
|
|
23
|
-
pk: int,
|
|
24
|
-
asset_id: int,
|
|
25
|
-
waypoints: List[Waypoint],
|
|
26
|
-
start_at: datetime,
|
|
27
|
-
end_at: datetime,
|
|
28
|
-
) -> None:
|
|
29
|
-
"""Constructor"""
|
|
30
|
-
self.pk = pk
|
|
31
|
-
self.asset_id = asset_id
|
|
32
|
-
self.waypoints = waypoints
|
|
33
|
-
self.start_at = start_at
|
|
34
|
-
self.end_at = end_at
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def _readable(self) -> str | None | bool:
|
|
38
|
-
"""Readable"""
|
|
39
|
-
return (
|
|
40
|
-
f'Checkpoint(pk={self.pk}, asset_id={self.asset_id}, waypoints={self.waypoints}, '
|
|
41
|
-
+ f'start_at={self.start_at}, end_at={self.end_at})'
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
def __str__(self) -> str | None | bool:
|
|
45
|
-
"""Readable property"""
|
|
46
|
-
return self._readable
|
|
47
|
-
|
|
48
|
-
def __repr__(self) -> str | None | bool:
|
|
49
|
-
"""Readable property"""
|
|
50
|
-
return self._readable
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"""Waypoint entity"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
|
|
5
|
-
from layrz_sdk.entities.general.geofence import Geofence
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Waypoint:
|
|
9
|
-
"""
|
|
10
|
-
Checkpoint waypoint entity definition
|
|
11
|
-
---
|
|
12
|
-
Attributes
|
|
13
|
-
- pk : Waypoint ID
|
|
14
|
-
- geofence : Related geofence
|
|
15
|
-
- start_at : Date of start this waypoint stage
|
|
16
|
-
- end_at : Date of end this waypoint stage
|
|
17
|
-
- sequence_real : Real sequence performed
|
|
18
|
-
- sequence_ideal : Ideal/defined sequence
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
def __init__(
|
|
22
|
-
self,
|
|
23
|
-
pk: int,
|
|
24
|
-
geofence: Geofence,
|
|
25
|
-
start_at: datetime,
|
|
26
|
-
end_at: datetime,
|
|
27
|
-
sequence_real: int,
|
|
28
|
-
sequence_ideal: int,
|
|
29
|
-
) -> None:
|
|
30
|
-
"""Constructor"""
|
|
31
|
-
self.pk = pk
|
|
32
|
-
self.geofence = geofence
|
|
33
|
-
self.start_at = start_at
|
|
34
|
-
self.end_at = end_at
|
|
35
|
-
self.sequence_real = sequence_real
|
|
36
|
-
self.sequence_ideal = sequence_ideal
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def _readable(self) -> str | None | bool:
|
|
40
|
-
"""Readable"""
|
|
41
|
-
return (
|
|
42
|
-
f'Waypoint(pk={self.pk}, geofence={self.geofence}, start_at={self.start_at}, '
|
|
43
|
-
+ f'end_at={self.end_at}, sequence_real={self.sequence_real}, sequence_ideal={self.sequence_ideal})'
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
def __str__(self) -> str | None | bool:
|
|
47
|
-
"""Readable property"""
|
|
48
|
-
return self._readable
|
|
49
|
-
|
|
50
|
-
def __repr__(self) -> str | None | bool:
|
|
51
|
-
"""Readable property"""
|
|
52
|
-
return self._readable
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"""Event entity"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime
|
|
4
|
-
|
|
5
|
-
from layrz_sdk.entities.cases.trigger import Trigger
|
|
6
|
-
from layrz_sdk.entities.general.geofence import Geofence, PresenceType
|
|
7
|
-
from layrz_sdk.entities.telemetry.message import Message
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Event:
|
|
11
|
-
"""
|
|
12
|
-
Event entity definition
|
|
13
|
-
|
|
14
|
-
Available attributes
|
|
15
|
-
--------------------
|
|
16
|
-
pk : Event ID
|
|
17
|
-
trigger : Trigger object that triggered the event
|
|
18
|
-
asset_id : ID of the Asset owner of the event
|
|
19
|
-
message : Telemetry information of the event
|
|
20
|
-
activated_at : Reception/triggered at
|
|
21
|
-
geofence : Geofence where the event occurred
|
|
22
|
-
presence_type : Presence type of the event
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(
|
|
26
|
-
self,
|
|
27
|
-
pk: int,
|
|
28
|
-
trigger: Trigger,
|
|
29
|
-
asset_id: int,
|
|
30
|
-
message: Message,
|
|
31
|
-
activated_at: datetime,
|
|
32
|
-
geofence: Geofence | None = None,
|
|
33
|
-
presence_type: PresenceType | None = None,
|
|
34
|
-
) -> None:
|
|
35
|
-
"""Constructor"""
|
|
36
|
-
self.pk = pk
|
|
37
|
-
self.trigger = trigger
|
|
38
|
-
self.asset_id = asset_id
|
|
39
|
-
self.message = message
|
|
40
|
-
self.activated_at = activated_at
|
|
41
|
-
self.geofence = geofence
|
|
42
|
-
self.presence_type = presence_type
|
|
43
|
-
|
|
44
|
-
@property
|
|
45
|
-
def _readable(self) -> str | None | bool:
|
|
46
|
-
"""Readable"""
|
|
47
|
-
return (
|
|
48
|
-
f'Event(pk={self.pk}, trigger={self.trigger}, asset_id={self.asset_id}, '
|
|
49
|
-
+ f'message={self.message}, activated_at={self.activated_at})'
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
def __str__(self) -> str | None | bool:
|
|
53
|
-
"""Readable property"""
|
|
54
|
-
return self._readable
|
|
55
|
-
|
|
56
|
-
def __repr__(self) -> str | None | bool:
|
|
57
|
-
"""Readable property"""
|
|
58
|
-
return self._readable
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"""General entities"""
|
|
2
|
-
|
|
3
|
-
from .asset import Asset
|
|
4
|
-
from .asset_operation_mode import AssetOperationMode
|
|
5
|
-
from .custom_field import CustomField
|
|
6
|
-
from .device import Device
|
|
7
|
-
from .geofence import Geofence, PresenceType
|
|
8
|
-
from .sensor import Sensor
|
|
9
|
-
from .user import User
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"""Asset Entity"""
|
|
2
|
-
|
|
3
|
-
from typing import List
|
|
4
|
-
|
|
5
|
-
from .asset_operation_mode import AssetOperationMode
|
|
6
|
-
from .custom_field import CustomField
|
|
7
|
-
from .device import Device
|
|
8
|
-
from .sensor import Sensor
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class Asset:
|
|
12
|
-
"""
|
|
13
|
-
Asset entity definition
|
|
14
|
-
---
|
|
15
|
-
Attributes
|
|
16
|
-
- pk : Asset ID
|
|
17
|
-
- name : Name of the asset
|
|
18
|
-
- vin : Vehicle identification number
|
|
19
|
-
- plate : Vehicle plate number
|
|
20
|
-
- asset_type : Asset type ID
|
|
21
|
-
- devices : List of devices
|
|
22
|
-
- operation_mode : Operation mode of the asset
|
|
23
|
-
- custom_fields : List of custom fields
|
|
24
|
-
- children : List of children assets
|
|
25
|
-
- sensors : List of sensors
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
def __init__(
|
|
29
|
-
self,
|
|
30
|
-
pk: int,
|
|
31
|
-
name: str,
|
|
32
|
-
vin: str,
|
|
33
|
-
plate: str,
|
|
34
|
-
asset_type: int,
|
|
35
|
-
operation_mode: AssetOperationMode,
|
|
36
|
-
sensors: List[Sensor] = None,
|
|
37
|
-
custom_fields: List[CustomField] = None,
|
|
38
|
-
devices: List[Device] = None,
|
|
39
|
-
children: List = None,
|
|
40
|
-
) -> None:
|
|
41
|
-
"""Constructor"""
|
|
42
|
-
self.pk = pk
|
|
43
|
-
self.name = name
|
|
44
|
-
self.vin = vin
|
|
45
|
-
self.plate = plate
|
|
46
|
-
self.asset_type = asset_type
|
|
47
|
-
self.operation_mode = operation_mode
|
|
48
|
-
self.sensors = sensors if sensors else []
|
|
49
|
-
self.custom_fields = custom_fields if custom_fields else []
|
|
50
|
-
self.devices = devices if devices else []
|
|
51
|
-
|
|
52
|
-
if children and self.operation_mode == AssetOperationMode.ASSETMULTIPLE:
|
|
53
|
-
self.children = children
|
|
54
|
-
else:
|
|
55
|
-
self.children = []
|
|
56
|
-
|
|
57
|
-
@property
|
|
58
|
-
def _readable(self) -> str | None | bool:
|
|
59
|
-
"""Readable"""
|
|
60
|
-
return (
|
|
61
|
-
f'Asset(pk={self.pk}, name={self.name}, vin={self.vin}, plate={self.plate}, '
|
|
62
|
-
+ f'asset_type={self.asset_type}, operation_mode={self.operation_mode}, '
|
|
63
|
-
+ f'custom_fields={self.custom_fields}, children={self.children}, sensors={self.sensors})'
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
def __str__(self) -> str | None | bool:
|
|
67
|
-
"""Readable property"""
|
|
68
|
-
return self._readable
|
|
69
|
-
|
|
70
|
-
def __repr__(self) -> str | None | bool:
|
|
71
|
-
"""Readable property"""
|
|
72
|
-
return self._readable
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""Custom Field entitiy"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class CustomField:
|
|
5
|
-
"""
|
|
6
|
-
Custom field definition
|
|
7
|
-
---
|
|
8
|
-
Attributes
|
|
9
|
-
- name : Name of the custom field
|
|
10
|
-
- value : Value of the custom field
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self, name: str, value: str) -> None:
|
|
14
|
-
"""Constructor"""
|
|
15
|
-
self.name = name
|
|
16
|
-
self.value = value
|
|
17
|
-
|
|
18
|
-
@property
|
|
19
|
-
def _readable(self) -> str | None | bool:
|
|
20
|
-
"""Readable"""
|
|
21
|
-
return f'CustomField(name={self.name}, value={self.value})'
|
|
22
|
-
|
|
23
|
-
def __str__(self) -> str | None | bool:
|
|
24
|
-
"""Readable property"""
|
|
25
|
-
return self._readable
|
|
26
|
-
|
|
27
|
-
def __repr__(self) -> str | None | bool:
|
|
28
|
-
"""Readable property"""
|
|
29
|
-
return self._readable
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"""Device entitiy"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Device:
|
|
5
|
-
"""
|
|
6
|
-
Device definition
|
|
7
|
-
---
|
|
8
|
-
Attributes
|
|
9
|
-
- pk : Device ID
|
|
10
|
-
- name : Name of the device
|
|
11
|
-
- ident : Unique identifier of the device.
|
|
12
|
-
- protocol : Protocol slug of the device.
|
|
13
|
-
- is_primary : True if this device is the primary device of the asset.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(
|
|
17
|
-
self,
|
|
18
|
-
pk: int,
|
|
19
|
-
name: str,
|
|
20
|
-
ident: str,
|
|
21
|
-
protocol: str,
|
|
22
|
-
is_primary: bool = False,
|
|
23
|
-
) -> None:
|
|
24
|
-
"""Constructor"""
|
|
25
|
-
self.pk = pk
|
|
26
|
-
self.name = name
|
|
27
|
-
self.ident = ident
|
|
28
|
-
self.protocol = protocol
|
|
29
|
-
self.is_primary = is_primary
|
|
30
|
-
|
|
31
|
-
@property
|
|
32
|
-
def _readable(self) -> str | None | bool:
|
|
33
|
-
"""Readable"""
|
|
34
|
-
return (
|
|
35
|
-
f'Device(pk={self.pk}, ident={self.ident}, name={self.name}, protocol={self.protocol}, '
|
|
36
|
-
+ f'is_primary={self.is_primary})'
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
def __str__(self) -> str | None | bool:
|
|
40
|
-
"""Readable property"""
|
|
41
|
-
return self._readable
|
|
42
|
-
|
|
43
|
-
def __repr__(self) -> str | None | bool:
|
|
44
|
-
"""Readable property"""
|
|
45
|
-
return self._readable
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"""Geofence entity"""
|
|
2
|
-
|
|
3
|
-
from enum import Enum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Geofence:
|
|
7
|
-
"""
|
|
8
|
-
Geofence entity definition
|
|
9
|
-
---
|
|
10
|
-
Attributes
|
|
11
|
-
- pk : Geofence ID
|
|
12
|
-
- name : Geofence name
|
|
13
|
-
- color : Geofence color in Hex format
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(self, pk: int, name: str, color: str) -> None:
|
|
17
|
-
"""Constructor"""
|
|
18
|
-
self.pk = pk
|
|
19
|
-
self.name = name
|
|
20
|
-
self.color = color
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def _readable(self) -> str | None | bool:
|
|
24
|
-
"""Readable"""
|
|
25
|
-
return f'Geofence(pk={self.pk}, name={self.name}, color={self.color})'
|
|
26
|
-
|
|
27
|
-
def __str__(self) -> str | None | bool:
|
|
28
|
-
"""Readable property"""
|
|
29
|
-
return self._readable
|
|
30
|
-
|
|
31
|
-
def __repr__(self) -> str | None | bool:
|
|
32
|
-
"""Readable property"""
|
|
33
|
-
return self._readable
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class PresenceType(Enum):
|
|
37
|
-
"""Presence type enum"""
|
|
38
|
-
|
|
39
|
-
ENTRANCE = 'ENTRANCE'
|
|
40
|
-
EXIT = 'EXIT'
|
|
41
|
-
|
|
42
|
-
@property
|
|
43
|
-
def _readable(self) -> str | None | bool:
|
|
44
|
-
"""Readable"""
|
|
45
|
-
return f'PresenceType.{self.value}'
|
|
46
|
-
|
|
47
|
-
def __str__(self) -> str | None | bool:
|
|
48
|
-
"""Readable property"""
|
|
49
|
-
return self._readable
|
|
50
|
-
|
|
51
|
-
def __repr__(self) -> str | None | bool:
|
|
52
|
-
"""Readable property"""
|
|
53
|
-
return self._readable
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"""Sensor entity"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Sensor:
|
|
5
|
-
"""
|
|
6
|
-
Sensor entity
|
|
7
|
-
---
|
|
8
|
-
Attributes
|
|
9
|
-
pk : Sensor ID
|
|
10
|
-
name : Name of the sensor
|
|
11
|
-
slug : Slug of the sensor
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
def __init__(self, pk: int, name: str, slug: str) -> None:
|
|
15
|
-
"""Constructor"""
|
|
16
|
-
self.pk = pk
|
|
17
|
-
self.name = name
|
|
18
|
-
self.slug = slug
|
|
19
|
-
|
|
20
|
-
@property
|
|
21
|
-
def _readable(self) -> str | None | bool:
|
|
22
|
-
"""Readable"""
|
|
23
|
-
return f'Sensor(pk={self.pk}, name={self.name}, slug={self.slug})'
|
|
24
|
-
|
|
25
|
-
def __str__(self) -> str | None | bool:
|
|
26
|
-
"""Readable property"""
|
|
27
|
-
return self._readable
|
|
28
|
-
|
|
29
|
-
def __repr__(self) -> str | None | bool:
|
|
30
|
-
"""Readable property"""
|
|
31
|
-
return self._readable
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""User entity"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class User:
|
|
5
|
-
"""
|
|
6
|
-
User entity definition
|
|
7
|
-
---
|
|
8
|
-
Attributes
|
|
9
|
-
pk : User ID
|
|
10
|
-
name : User name
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self, pk: int, name: str) -> None:
|
|
14
|
-
"""Constructor"""
|
|
15
|
-
self.pk = pk
|
|
16
|
-
self.name = name
|
|
17
|
-
|
|
18
|
-
@property
|
|
19
|
-
def _readable(self) -> str | None | bool:
|
|
20
|
-
"""Readable"""
|
|
21
|
-
return f'User(pk={self.pk}, name={self.name})'
|
|
22
|
-
|
|
23
|
-
def __str__(self) -> str | None | bool:
|
|
24
|
-
"""Readable property"""
|
|
25
|
-
return self._readable
|
|
26
|
-
|
|
27
|
-
def __repr__(self) -> str | None | bool:
|
|
28
|
-
"""Readable property"""
|
|
29
|
-
return self._readable
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"""Transaction entity"""
|
|
2
|
-
|
|
3
|
-
from datetime import datetime, timedelta
|
|
4
|
-
|
|
5
|
-
from layrz_sdk.entities.general.asset import Asset
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Transaction:
|
|
9
|
-
"""
|
|
10
|
-
Transaction definition
|
|
11
|
-
---
|
|
12
|
-
Attributes
|
|
13
|
-
pk : Transaction ID
|
|
14
|
-
asset : Asset related to the transaction
|
|
15
|
-
amount : Amount of the transaction
|
|
16
|
-
quantity : Quantity of the transaction
|
|
17
|
-
mileage : Mileage in kilometers
|
|
18
|
-
distance : Distance traveled in kilometers
|
|
19
|
-
engine_time : Time with the engine on
|
|
20
|
-
idle_time : Time with the engine on without movement
|
|
21
|
-
in_geofence : Flag to indicate if transaction occurred inside a geofence
|
|
22
|
-
geofence_name : Name of the geofence where transaction occurred
|
|
23
|
-
received_at : Transaction reception date and time
|
|
24
|
-
is_wildcard : Wildcard indicator for transaction
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
def __init__(
|
|
28
|
-
self,
|
|
29
|
-
pk: int,
|
|
30
|
-
asset: Asset,
|
|
31
|
-
amount: float,
|
|
32
|
-
quantity: float,
|
|
33
|
-
mileage: float,
|
|
34
|
-
distance: float,
|
|
35
|
-
engine_time: timedelta,
|
|
36
|
-
idle_time: timedelta,
|
|
37
|
-
in_geofence: bool,
|
|
38
|
-
geofence_name: str,
|
|
39
|
-
received_at: datetime,
|
|
40
|
-
is_wildcard: bool,
|
|
41
|
-
) -> None:
|
|
42
|
-
"""Constructor"""
|
|
43
|
-
self.pk = pk
|
|
44
|
-
self.asset = asset
|
|
45
|
-
self.amount = amount
|
|
46
|
-
self.quantity = quantity
|
|
47
|
-
self.mileage = mileage
|
|
48
|
-
self.distance = distance
|
|
49
|
-
self.engine_time = engine_time
|
|
50
|
-
self.idle_time = idle_time
|
|
51
|
-
self.in_geofence = in_geofence
|
|
52
|
-
self.geofence_name = geofence_name
|
|
53
|
-
self.received_at = received_at
|
|
54
|
-
self.is_wildcard = is_wildcard
|