diff options
author | Andrew Godwin | 2022-11-27 17:05:31 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-27 17:05:31 -0700 |
commit | 3b079526a2ea78b68555094ca498faea31022759 (patch) | |
tree | 28414e93aa7d412148fbcba6ecd6e2a0b09ecb5f /stator/models.py | |
parent | 2f443414a7e029f83292873257d2940b5a10cc64 (diff) | |
download | takahe-3b079526a2ea78b68555094ca498faea31022759.tar.gz takahe-3b079526a2ea78b68555094ca498faea31022759.tar.bz2 takahe-3b079526a2ea78b68555094ca498faea31022759.zip |
User fetching and inbox message cleaning
Diffstat (limited to 'stator/models.py')
-rw-r--r-- | stator/models.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/stator/models.py b/stator/models.py index bbff395..5257ac9 100644 --- a/stator/models.py +++ b/stator/models.py @@ -74,6 +74,10 @@ class StatorModel(models.Model): def state_graph(cls) -> Type[StateGraph]: return cls._meta.get_field("state").graph + @property + def state_age(self) -> int: + return (timezone.now() - self.state_changed).total_seconds() + @classmethod async def atransition_schedule_due(cls, now=None) -> models.QuerySet: """ @@ -184,13 +188,23 @@ class StatorModel(models.Model): state = state.name if state not in self.state_graph.states: raise ValueError(f"Invalid state {state}") - self.__class__.objects.filter(pk=self.pk).update( - state=state, - state_changed=timezone.now(), - state_attempted=None, - state_locked_until=None, - state_ready=True, - ) + # See if it's ready immediately (if not, delay until first try_interval) + if self.state_graph.states[state].attempt_immediately: + self.__class__.objects.filter(pk=self.pk).update( + state=state, + state_changed=timezone.now(), + state_attempted=None, + state_locked_until=None, + state_ready=True, + ) + else: + self.__class__.objects.filter(pk=self.pk).update( + state=state, + state_changed=timezone.now(), + state_attempted=timezone.now(), + state_locked_until=None, + state_ready=False, + ) atransition_perform = sync_to_async(transition_perform) |