From 77b6bb95e151fca9d1057a709d5dcfaac8accb1c Mon Sep 17 00:00:00 2001 From: bcgov-brwang <87880048+bcgov-brwang@users.noreply.github.com> Date: Wed, 6 May 2026 15:39:10 -0700 Subject: [PATCH 1/3] DBC22-6169: access webcam database to retrieve is_on property --- src/backend/apps/webcam/admin.py | 2 +- .../migrations/0014_remove_webcam_is_on.py | 17 +++++++++++++++++ src/backend/apps/webcam/models.py | 14 +++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/backend/apps/webcam/migrations/0014_remove_webcam_is_on.py diff --git a/src/backend/apps/webcam/admin.py b/src/backend/apps/webcam/admin.py index 41d7553d1..53e97ad91 100644 --- a/src/backend/apps/webcam/admin.py +++ b/src/backend/apps/webcam/admin.py @@ -11,7 +11,7 @@ class WebcamAdmin(admin.GISModelAdmin): - readonly_fields = ('id', ) + readonly_fields = ('id', 'is_on') gis_widget = DriveBCMapWidget change_form_template = "admin/timelapse.html" # custom template diff --git a/src/backend/apps/webcam/migrations/0014_remove_webcam_is_on.py b/src/backend/apps/webcam/migrations/0014_remove_webcam_is_on.py new file mode 100644 index 000000000..e3fd2dd4e --- /dev/null +++ b/src/backend/apps/webcam/migrations/0014_remove_webcam_is_on.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2.12 on 2026-05-06 21:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('webcam', '0013_camerasource_highway_region_regionhighway_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='webcam', + name='is_on', + ), + ] diff --git a/src/backend/apps/webcam/models.py b/src/backend/apps/webcam/models.py index b2b471213..7432ea085 100644 --- a/src/backend/apps/webcam/models.py +++ b/src/backend/apps/webcam/models.py @@ -39,7 +39,6 @@ class Webcam(ExportModelOperationsMixin('webcam'), BaseModel): nearby_objs = models.JSONField(default=dict, blank=True) # General status - is_on = models.BooleanField(default=True) should_appear = models.BooleanField(default=True) is_new = models.BooleanField(default=False) is_on_demand = models.BooleanField(default=False) @@ -88,6 +87,19 @@ def get_timezone(self): # PointField stores as (x=lon, y=lat) tzname = tf.timezone_at(lng=self.location.x, lat=self.location.y) return pytz.timezone(tzname) if tzname else timezone.utc + + @property + def camera_source(self): + if not self.id: + return None + return CameraSource.objects.using("mssql").filter( + id=self.id + ).first() + + @property + def is_on(self): + cs = self.camera_source + return True if not cs else not cs.cam_controldisabled class Region(models.Model): From ede5cf984293bba0bd31864240df9a9cd5d2ca03 Mon Sep 17 00:00:00 2001 From: bcgov-brwang <87880048+bcgov-brwang@users.noreply.github.com> Date: Thu, 7 May 2026 08:01:07 -0700 Subject: [PATCH 2/3] revert back --- src/backend/apps/webcam/admin.py | 2 +- src/backend/apps/webcam/models.py | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/backend/apps/webcam/admin.py b/src/backend/apps/webcam/admin.py index 53e97ad91..fb7307877 100644 --- a/src/backend/apps/webcam/admin.py +++ b/src/backend/apps/webcam/admin.py @@ -11,7 +11,7 @@ class WebcamAdmin(admin.GISModelAdmin): - readonly_fields = ('id', 'is_on') + readonly_fields = ('id') gis_widget = DriveBCMapWidget change_form_template = "admin/timelapse.html" # custom template diff --git a/src/backend/apps/webcam/models.py b/src/backend/apps/webcam/models.py index 7432ea085..75b3906a0 100644 --- a/src/backend/apps/webcam/models.py +++ b/src/backend/apps/webcam/models.py @@ -39,6 +39,7 @@ class Webcam(ExportModelOperationsMixin('webcam'), BaseModel): nearby_objs = models.JSONField(default=dict, blank=True) # General status + is_on = models.BooleanField(default=True) should_appear = models.BooleanField(default=True) is_new = models.BooleanField(default=False) is_on_demand = models.BooleanField(default=False) @@ -88,18 +89,18 @@ def get_timezone(self): tzname = tf.timezone_at(lng=self.location.x, lat=self.location.y) return pytz.timezone(tzname) if tzname else timezone.utc - @property - def camera_source(self): - if not self.id: - return None - return CameraSource.objects.using("mssql").filter( - id=self.id - ).first() - - @property - def is_on(self): - cs = self.camera_source - return True if not cs else not cs.cam_controldisabled + # @property + # def camera_source(self): + # if not self.id: + # return None + # return CameraSource.objects.using("mssql").filter( + # id=self.id + # ).first() + + # @property + # def is_on(self): + # cs = self.camera_source + # return True if not cs else not cs.cam_controldisabled class Region(models.Model): From b2e5b6394ddcb22500645683cddeae689513112a Mon Sep 17 00:00:00 2001 From: bcgov-brwang <87880048+bcgov-brwang@users.noreply.github.com> Date: Thu, 7 May 2026 08:07:52 -0700 Subject: [PATCH 3/3] revert back --- src/backend/apps/webcam/admin.py | 2 +- .../webcam/migrations/0015_webcam_is_on.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/backend/apps/webcam/migrations/0015_webcam_is_on.py diff --git a/src/backend/apps/webcam/admin.py b/src/backend/apps/webcam/admin.py index fb7307877..0e8e9c666 100644 --- a/src/backend/apps/webcam/admin.py +++ b/src/backend/apps/webcam/admin.py @@ -11,7 +11,7 @@ class WebcamAdmin(admin.GISModelAdmin): - readonly_fields = ('id') + readonly_fields = ('id',) gis_widget = DriveBCMapWidget change_form_template = "admin/timelapse.html" # custom template diff --git a/src/backend/apps/webcam/migrations/0015_webcam_is_on.py b/src/backend/apps/webcam/migrations/0015_webcam_is_on.py new file mode 100644 index 000000000..17f0e7d8e --- /dev/null +++ b/src/backend/apps/webcam/migrations/0015_webcam_is_on.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.12 on 2026-05-07 15:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('webcam', '0014_remove_webcam_is_on'), + ] + + operations = [ + migrations.AddField( + model_name='webcam', + name='is_on', + field=models.BooleanField(default=True), + ), + ]