From 1b09eca24e4fa676e19f884d30fafbab42bedd51 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 14 Jan 2026 09:08:50 -0300 Subject: [PATCH] add is_online property to Worker and WorkerStatus models for online status tracking --- cluster/models.py | 16 ++++++++++++++++ templates/cluster/workers_list.html | 7 +++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/cluster/models.py b/cluster/models.py index 6e3fecc..bdfbc80 100644 --- a/cluster/models.py +++ b/cluster/models.py @@ -54,6 +54,14 @@ class Worker(models.Model): created = models.DateTimeField(auto_now_add=True) uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + @property + def is_online(self): + try: + return self.workerstatus.is_online + except WorkerStatus.DoesNotExist: + return False + + class WorkerStatus(models.Model): worker = models.OneToOneField(Worker, on_delete=models.CASCADE) @@ -70,3 +78,11 @@ class WorkerStatus(models.Model): updated = models.DateTimeField(auto_now=True) created = models.DateTimeField(auto_now_add=True) uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + + @property + def is_online(self): + from django.utils import timezone + from datetime import timedelta + if not self.last_seen: + return False + return self.last_seen >= timezone.now() - timedelta(minutes=10) diff --git a/templates/cluster/workers_list.html b/templates/cluster/workers_list.html index 88b34c8..5df00ce 100644 --- a/templates/cluster/workers_list.html +++ b/templates/cluster/workers_list.html @@ -54,11 +54,14 @@ {% trans 'Not set' %} {% endif %} - + {% if worker.workerstatus %} {{ worker.workerstatus.last_seen|date:"M d, H:i" }} {% else %} - {% trans 'Never' %} + {% trans 'Never' %} + {% endif %} + {% if not worker.is_online %} + {% endif %}