From 9211d7fd68698fbf6d8ca0024eaefbfcc321114e Mon Sep 17 00:00:00 2001 From: Syed Hassan Raza Date: Thu, 10 Aug 2023 17:51:46 +0500 Subject: [PATCH] Remove column fetch_offset_timezone (fixes #507) --- doc/dev/telemetry.rst | 12 +------- enhydris/telemetry/forms.py | 1 - ..._remove_telemetry_fetch_offset_timezone.py | 16 ++++++++++ enhydris/telemetry/models.py | 8 +---- enhydris/telemetry/tests/test_models.py | 7 ++--- .../test_views/test_telemetry_wizard_view.py | 29 ------------------- enhydris/telemetry/views.py | 1 - 7 files changed, 20 insertions(+), 54 deletions(-) create mode 100644 enhydris/telemetry/migrations/0008_remove_telemetry_fetch_offset_timezone.py diff --git a/doc/dev/telemetry.rst b/doc/dev/telemetry.rst index 225ca946..1c9e5c9f 100644 --- a/doc/dev/telemetry.rst +++ b/doc/dev/telemetry.rst @@ -75,16 +75,7 @@ Models is 125, then data will be fetched every day at 02:05 in the morning. Generally :attr:`~enhydris.telemetry.models.Telemetry.fetch_offset_minutes` - counts from midnight. - - .. attribute:: fetch_offset_timezone - :type: CharField - - The time zone to which - :attr:`~enhydris.telemetry.models.Telemetry.fetch_offset_minutes` - refers; a `tz database name`_ such as ``Europe/Athens``. - - .. _tz database name: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + counts from midnight UTC. .. attribute:: device_locator :type: string @@ -125,7 +116,6 @@ Models :const:`True` if according to :attr:`~enhydris.telemetry.models.Telemetry.fetch_interval_minutes`, :attr:`~enhydris.telemetry.models.Telemetry.fetch_offset_minutes`, - :attr:`~enhydris.telemetry.models.Telemetry.fetch_offset_timezone` and the current system time it's time to fetch data. .. method:: fetch() -> None diff --git a/enhydris/telemetry/forms.py b/enhydris/telemetry/forms.py index 44f4b61e..eaffaef9 100644 --- a/enhydris/telemetry/forms.py +++ b/enhydris/telemetry/forms.py @@ -20,7 +20,6 @@ class Meta: "data_timezone", "fetch_interval_minutes", "fetch_offset_minutes", - "fetch_offset_timezone", ] def __init__(self, *args, **kwargs): diff --git a/enhydris/telemetry/migrations/0008_remove_telemetry_fetch_offset_timezone.py b/enhydris/telemetry/migrations/0008_remove_telemetry_fetch_offset_timezone.py new file mode 100644 index 00000000..e029c403 --- /dev/null +++ b/enhydris/telemetry/migrations/0008_remove_telemetry_fetch_offset_timezone.py @@ -0,0 +1,16 @@ +# Generated by Django 3.2.19 on 2023-08-30 18:35 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("telemetry", "0007_alter_telemetry_data_timezone"), + ] + + operations = [ + migrations.RemoveField( + model_name="telemetry", + name="fetch_offset_timezone", + ), + ] diff --git a/enhydris/telemetry/models.py b/enhydris/telemetry/models.py index 449e85e4..b4ef4eed 100644 --- a/enhydris/telemetry/models.py +++ b/enhydris/telemetry/models.py @@ -64,12 +64,6 @@ class Telemetry(models.Model): "The offset generally counts from midnight." ), ) - fetch_offset_timezone = models.CharField( - max_length=35, - choices=timezone_choices, - verbose_name=_("Time zone for the fetch time offset"), - help_text=_("The time zone to which the fetch time offset refers."), - ) device_locator = models.CharField(max_length=200, blank=True) username = models.CharField(max_length=200, blank=True) password = models.CharField(max_length=200, blank=True) @@ -79,7 +73,7 @@ class Telemetry(models.Model): @property def is_due(self): - now = dt.datetime.now(tz=zoneinfo.ZoneInfo(self.fetch_offset_timezone)) + now = dt.datetime.now(tz=dt.timezone.utc) current_offset = now.minute + now.hour * 60 return current_offset % self.fetch_interval_minutes == self.fetch_offset_minutes diff --git a/enhydris/telemetry/tests/test_models.py b/enhydris/telemetry/tests/test_models.py index 31333b69..e19a1cf7 100644 --- a/enhydris/telemetry/tests/test_models.py +++ b/enhydris/telemetry/tests/test_models.py @@ -26,7 +26,6 @@ def setUpClass(cls): type="meteoview2", fetch_interval_minutes=10, fetch_offset_minutes=10, - fetch_offset_timezone="Europe/Athens", additional_config="{}", ) @@ -76,7 +75,6 @@ def setUpClass(cls): type="meteoview2", fetch_interval_minutes=10, fetch_offset_minutes=10, - fetch_offset_timezone="Europe/Athens", additional_config="{}", ) @@ -85,11 +83,11 @@ def _check(self, fetch_interval_minutes, fetch_offset_minutes, expected_result): self.telemetry.fetch_offset_minutes = fetch_offset_minutes self.assertEqual(self.telemetry.is_due, expected_result) - @freeze_time("2021-11-30 02:05", tz_offset=0) + @freeze_time("2021-11-30 00:05", tz_offset=0) def test_not_due(self): self._check(1440, 125, False) - @freeze_time("2021-11-30 00:05", tz_offset=0) + @freeze_time("2021-11-30 02:05", tz_offset=0) def test_is_due_1(self): self._check(1440, 125, True) @@ -131,7 +129,6 @@ def setUpTestData(cls): data_timezone="Europe/Athens", fetch_interval_minutes=10, fetch_offset_minutes=2, - fetch_offset_timezone="Asia/Vladivostok", username="someemail@email.com", password="topsecret", remote_station_id="42a", diff --git a/enhydris/telemetry/tests/test_views/test_telemetry_wizard_view.py b/enhydris/telemetry/tests/test_views/test_telemetry_wizard_view.py index 467dce3e..5640e445 100644 --- a/enhydris/telemetry/tests/test_views/test_telemetry_wizard_view.py +++ b/enhydris/telemetry/tests/test_views/test_telemetry_wizard_view.py @@ -38,7 +38,6 @@ def test_no_redirects(self): "data_timezone": "Europe/Athens", "fetch_interval_minutes": "10", "fetch_offset_minutes": "2", - "fetch_offset_timezone": "Europe/Kiev", }, ) response = self.client.get(f"/stations/{self.station.id}/telemetry/2/") @@ -83,12 +82,6 @@ def test_default_fetch_offset_minutes_is_empty(self): fetch_offset_minutes = self.soup.find(id="id_fetch_offset_minutes") self.assertIsNone(fetch_offset_minutes.get("value")) - def test_default_fetch_offset_timezone_is_empty(self): - option_empty = self.soup.find(id="id_fetch_offset_timezone").find( - "option", value="" - ) - self.assertEqual(option_empty.get("selected"), "") - @override_settings(ENHYDRIS_USERS_CAN_ADD_CONTENT=True) class CopyTelemetryDataFromDatabaseToSessionWithExistingTelemetryTestCase(TestCase): @@ -103,7 +96,6 @@ def setUpTestData(cls): data_timezone="Europe/Athens", fetch_interval_minutes=10, fetch_offset_minutes=2, - fetch_offset_timezone="Asia/Vladivostok", additional_config="{}", ) @@ -146,18 +138,6 @@ def test_default_fetch_offset_minutes_is_2(self): fetch_offset_minutes = self.soup.find(id="id_fetch_offset_minutes") self.assertEqual(fetch_offset_minutes["value"], "2") - def test_empty_fetch_offset_timezone_is_not_selected(self): - option_empty = self.soup.find(id="id_fetch_offset_timezone").find( - "option", value="" - ) - self.assertIsNone(option_empty.get("selected")) - - def test_default_fetch_offset_timezone_is_meteoview2(self): - option_asia_vladivostok = self.soup.find(id="id_fetch_offset_timezone").find( - "option", value="Asia/Vladivostok" - ) - self.assertEqual(option_asia_vladivostok.get("selected"), "") - def test_configuration_is_in_the_session(self): itemkey = f"telemetry_{self.station.id}" expected = { @@ -165,7 +145,6 @@ def test_configuration_is_in_the_session(self): "data_timezone": "Europe/Athens", "fetch_interval_minutes": 10, "fetch_offset_minutes": 2, - "fetch_offset_timezone": "Asia/Vladivostok", "additional_config": "{}", } self.assertEqual(self.cclient.session[itemkey], expected) @@ -190,7 +169,6 @@ def setUpClass(cls): "data_timezone": "Europe/Athens", "fetch_interval_minutes": "10", "fetch_offset_minutes": "2", - "fetch_offset_timezone": "Europe/Kiev", }, ) @@ -212,9 +190,6 @@ def test_fetch_interval_minutes(self): def test_fetch_offset_minutes(self): self.assertEqual(self._session("fetch_offset_minutes"), 2) - def test_fetch_offset_timezone(self): - self.assertEqual(self._session("fetch_offset_timezone"), "Europe/Kiev") - @override_settings(ENHYDRIS_USERS_CAN_ADD_CONTENT=True) class FirstStepPostErrorTestCase(TestCase): @@ -263,7 +238,6 @@ def _post_step_1(cls): "data_timezone": "Europe/Athens", "fetch_interval_minutes": "10", "fetch_offset_minutes": "2", - "fetch_offset_timezone": "Europe/Kiev", }, ) @@ -342,7 +316,6 @@ def _post_step_1(cls): "data_timezone": "Europe/Athens", "fetch_interval_minutes": "10", "fetch_offset_minutes": "2", - "fetch_offset_timezone": "Europe/Kiev", }, ) @@ -416,7 +389,6 @@ def test_updated_configuration(self): "data_timezone": "Europe/Athens", "fetch_interval_minutes": 10, "fetch_offset_minutes": 2, - "fetch_offset_timezone": "Europe/Kiev", "username": "someemail@email.com", "password": "topsecret", "device_locator": "", @@ -508,7 +480,6 @@ def setUp(self): "data_timezone": "Europe/Athens", "fetch_interval_minutes": "10", "fetch_offset_minutes": "2", - "fetch_offset_timezone": "Europe/Kiev", } session.save() diff --git a/enhydris/telemetry/views.py b/enhydris/telemetry/views.py index cac3ba90..ab99e453 100644 --- a/enhydris/telemetry/views.py +++ b/enhydris/telemetry/views.py @@ -76,7 +76,6 @@ def copy_telemetry_data_from_database_to_session(self): "data_timezone": None, "fetch_interval_minutes": None, "fetch_offset_minutes": None, - "fetch_offset_timezone": None, "additional_config": {}, } key = f"telemetry_{self.station.id}"