alarms: initialise state changed on create

This commit is contained in:
Iain Learmonth 2022-04-20 16:46:30 +01:00
parent 5050ff5a28
commit a33ef03607

View file

@ -1,10 +1,14 @@
import datetime
from app.extensions import db
from app.models import Alarm
def _get_alarm(target: str,
alarm_type: str,
*,
proxy_id=None,
origin_id=None,
create_if_missing=True):
if target == "proxy":
alarm = Alarm.query.filter(
@ -12,16 +16,27 @@ def _get_alarm(target: str,
Alarm.alarm_type == alarm_type,
Alarm.proxy_id == proxy_id
).first()
elif target == "origin":
alarm = Alarm.query.filter(
Alarm.target == "origin",
Alarm.alarm_type == alarm_type,
Alarm.proxy_id == origin_id
).first()
else:
return None
if create_if_missing and alarm is None:
alarm = Alarm()
alarm.target = target
alarm.alarm_type = alarm_type
alarm.state_changed = datetime.datetime.utcnow()
if target == "proxy":
alarm.proxy_id = proxy_id
if target == "origin":
alarm.origin_id = origin_id
db.session.add(alarm)
db.session.commit()
return alarm
def get_proxy_alarm(proxy_id: int, alarm_type: str):
return _get_alarm("proxy", "alarm_type", proxy_id=proxy_id)
return _get_alarm("proxy", alarm_type, proxy_id=proxy_id)