Fix bug: unable to save jobs with timezone aware dates (#1308)

* Fix bug on jobs with timezone aware dates

* Add Ambro17 as colaborator
This commit is contained in:
Ambro 2019-01-04 16:29:07 -03:00 committed by Jasmin Bom
parent 7eeb670a59
commit 23fe991b85
3 changed files with 20 additions and 1 deletions

View file

@ -16,6 +16,7 @@ Contributors
The following wonderful people contributed directly or indirectly to this project:
- `Alateas <https://github.com/alateas>`_
- `Ambro17 <https://github.com/Ambro17>`_
- `Anton Tagunov <https://github.com/anton-tagunov>`_
- `Avanatiker <https://github.com/Avanatiker>`_
- `Balduro <https://github.com/Balduro>`_

View file

@ -62,7 +62,7 @@ class JobQueue(object):
raise ValueError('next_t is None')
if isinstance(next_t, datetime.datetime):
next_t = (next_t - datetime.datetime.now()).total_seconds()
next_t = (next_t - datetime.datetime.now(next_t.tzinfo)).total_seconds()
elif isinstance(next_t, datetime.time):
next_datetime = datetime.datetime.combine(datetime.date.today(), next_t)

View file

@ -184,6 +184,24 @@ class TestJobQueue(object):
sleep(0.06)
assert pytest.approx(self.job_time) == expected_time
def test_datetime_with_timezone_job_run_once(self, job_queue):
# Test that run_once jobs work with timezone aware datetimes.
offset = datetime.timedelta(hours=-3)
when = datetime.datetime.now(datetime.timezone(offset))
job_queue.run_once(self.job_run_once, when)
sleep(0.01)
assert self.result == 1
def test_datetime_with_timezone_job_run_repeating(self, job_queue):
# Test that run_repeating jobs work with timezone aware datetimes.
offset = datetime.timedelta(hours=5)
now_with_offset = datetime.datetime.now(datetime.timezone(offset))
job_queue.run_repeating(self.job_run_once, interval=0.01, first=now_with_offset)
sleep(0.015)
assert self.result == 2
def test_time_unit_dt_time_today(self, job_queue):
# Testing running at a specific time today
delta = 0.05