forked from platypush/platypush
[#340] Better state management for alarms.
This commit is contained in:
parent
9d5c755188
commit
4b578c38c8
2 changed files with 7 additions and 3 deletions
|
@ -3,7 +3,7 @@ import sys
|
|||
from threading import RLock
|
||||
from typing import Collection, Generator, Optional, Dict, Any, List, Union
|
||||
|
||||
from sqlalchemy.orm import Session, make_transient
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from platypush.context import get_plugin
|
||||
from platypush.entities import EntityManager
|
||||
|
@ -182,7 +182,6 @@ class AlarmPlugin(RunnablePlugin, EntityManager):
|
|||
def _clear_alarm(self, alarm: DbAlarm, session: Session):
|
||||
self.alarms.pop(str(alarm.name), None)
|
||||
session.delete(alarm)
|
||||
make_transient(alarm)
|
||||
self._bus.post(EntityDeleteEvent(entity=alarm))
|
||||
|
||||
def _clear_expired_alarms(self, session: Session):
|
||||
|
|
|
@ -129,7 +129,11 @@ class Alarm:
|
|||
return self._enabled
|
||||
|
||||
def is_shut_down(self):
|
||||
return self.state == AlarmState.SHUTDOWN
|
||||
return self.state in {
|
||||
AlarmState.SHUTDOWN,
|
||||
AlarmState.DISMISSED,
|
||||
AlarmState.UNKNOWN,
|
||||
}
|
||||
|
||||
def is_expired(self):
|
||||
return (self.get_next() or 0) < time.time()
|
||||
|
@ -283,6 +287,7 @@ class Alarm:
|
|||
snooze_interval=alarm.snooze_interval, # type: ignore
|
||||
enabled=bool(alarm.enabled),
|
||||
static=bool(alarm.static),
|
||||
state=getattr(AlarmState, str(alarm.state)),
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue