import datetime
import json
from divera.api import endpointwrappers as _epw
[docs]class SetStatus(_epw.FunctionalEndPoint):
method = 'POST'
path = '/api/v2/statusgeber/set-status'
def __init__(
self,
id: int = None,
vehicle: int = None,
note: str = None,
reset_date: [int, datetime.datetime] = None,
reset_to: int = None,
alarm_skip: bool = None,
status_skip_statusplan: bool = None,
status_skip_geofence: bool = None,
):
"""
Status setzen
:param id: ID des neuen Status
:param vehicle: ID des Fahrzeugs, dem der Nutzer zugewiesen werden soll - Zuordnung erlischt bei erneutem Statuswechsel
:param note: Freitext zur Statusmeldung - Erlischt bei erneutem Statuswechsel
:param reset_date: Zeitpunkt als UNIX-Zeitstempel, an dem der Status zurückgesetzt werden soll
:param reset_to: ID des Folgestatus bei Zurücksetzen
:param alarm_skip: Statusänderung ignorieren wenn gerade ein Einsatz anliegt
:param status_skip_statusplan: Alle Termine im Zeitraum überschreiben
:param status_skip_geofence: Alle Geofences im Zeitraum ignorieren
"""
self.data = {
'id': id,
'vehicle': vehicle,
'note': note,
'reset_date': reset_date if type(reset_date) is not datetime.datetime else reset_date.timestamp(),
'reset_to': reset_to,
'alarm_skip': alarm_skip,
'status_skip_statusplan': status_skip_statusplan,
'status_skip_geofence': status_skip_geofence,
}
def __call__(
self,
base_url,
access_token,
*args, **kwargs
):
args = [
base_url.rstrip('/') + '/' + self.path.lstrip('/') + f'?accesskey={access_token}',
]
kwargs = {
'headers': {
'Content-Type': 'application/json',
},
'data': json.dumps({
'Status': {
key: self.data[key]
for key in self.data
if self.data[key] is not None
},
}),
}
return args, kwargs