Compare commits

...
2 Commits
Author SHA1 Message Date
GDay 31e82ad028 Release v1.4.9 2022-12-22 03:06:01 +01:00
Stan Triepels b66dfbd3af Fix DST timezone change (move from DST to normal jump) (#56) 2022-12-22 03:02:53 +01:00
6 changed files with 57 additions and 10 deletions
+6
View File
@@ -2,6 +2,12 @@
## [Unreleased](https://github.com/GDay/django-q2/tree/HEAD) ## [Unreleased](https://github.com/GDay/django-q2/tree/HEAD)
## [v1.4.9](https://github.com/GDay/django-q2/tree/v1.4.9) (2022-12-22)
**Merged pull requests:**
- Fix DST timezone change (move from DST to normal jump) https://github.com/GDay/django-q2/pull/56
## [v1.4.8](https://github.com/GDay/django-q2/tree/v1.4.8) (2022-12-21) ## [v1.4.8](https://github.com/GDay/django-q2/tree/v1.4.8) (2022-12-21)
**Merged pull requests:** **Merged pull requests:**
+1 -1
View File
@@ -1,6 +1,6 @@
import django import django
VERSION = (1, 4, 8) VERSION = (1, 4, 9)
if django.VERSION < (3, 2): if django.VERSION < (3, 2):
default_app_config = "django_q.apps.DjangoQConfig" default_app_config = "django_q.apps.DjangoQConfig"
+2 -7
View File
@@ -255,13 +255,8 @@ class Schedule(models.Model):
# based on DST active or not # based on DST active or not
extra_diff = (new_next_run - current_next_run) - add extra_diff = (new_next_run - current_next_run) - add
# if we have one positive hour difference, then subtract it, so we are even # subtract difference
# and vice versa. In most cases, this will be 0, as there won't be a next_run -= extra_diff
# timezone diff
if extra_diff > timedelta(hours=0):
next_run -= extra_diff
else:
next_run += extra_diff
return next_run return next_run
+46
View File
@@ -149,6 +149,52 @@ def test_scheduler_daylight_saving_time_daily(broker, monkeypatch):
next_run = next_run.astimezone(tz) next_run = next_run.astimezone(tz)
assert str(next_run) == "2021-03-30 01:00:00+02:00" assert str(next_run) == "2021-03-30 01:00:00+02:00"
# Create second schedule with the next run date on the start date. It will move
# one day forward when we run the scheduler
start_date = datetime(2021, 10, 29, 1, 0, 0)
schedule = create_schedule(
"django_q.tests.tasks.word_multiply",
2,
name="multiply",
schedule_type=Schedule.DAILY,
next_run=start_date,
)
# Run scheduler so we get the next run date
scheduler(broker=broker)
schedule.refresh_from_db()
next_run = schedule.next_run
assert str(next_run) == "2021-10-29 23:00:00+00:00"
# In the Amsterdam timezone, it's 1 hour over midnight (+02)
next_run = next_run.astimezone(tz)
assert str(next_run) == "2021-10-30 01:00:00+02:00"
# Run scheduler so we get the next run date
scheduler(broker=broker)
schedule.refresh_from_db()
next_run = schedule.next_run
assert str(next_run) == "2021-10-30 23:00:00+00:00"
# In the Amsterdam timezone, it's 1 hour over midnight (+02)
next_run = next_run.astimezone(tz)
assert str(next_run) == "2021-10-31 01:00:00+02:00"
# Run scheduler so we get the next run date
scheduler(broker=broker)
schedule.refresh_from_db()
next_run = schedule.next_run
assert str(next_run) == "2021-11-01 00:00:00+00:00"
# In the Amsterdam timezone, it's 1 hour over midnight (+01)
# Switch of DST
next_run = next_run.astimezone(tz)
assert str(next_run) == "2021-11-01 01:00:00+01:00"
@pytest.mark.django_db @pytest.mark.django_db
def test_scheduler(broker, monkeypatch): def test_scheduler(broker, monkeypatch):
+1 -1
View File
@@ -75,7 +75,7 @@ author = "Ilan Steemers, Stan Triepels"
# The short X.Y version. # The short X.Y version.
version = "1.4" version = "1.4"
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = "1.4.8" release = "1.4.9"
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
+1 -1
View File
@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "django-q2" name = "django-q2"
version = "1.4.8" version = "1.4.9"
packages = [ packages = [
{ include = "django_q" }, { include = "django_q" },
] ]