diff --git a/redash/models.py b/redash/models.py index 35ff088e56..e8035061d5 100644 --- a/redash/models.py +++ b/redash/models.py @@ -833,8 +833,12 @@ def outdated_queries(cls): now = utils.utcnow() outdated_queries = {} for query in queries: - if should_schedule_next(query.latest_query_data.retrieved_at, now, - query.schedule, query.schedule_failures): + if query.latest_query_data: + retrieved_at = query.latest_query_data.retrieved_at + else: + retrieved_at = now + + if should_schedule_next(retrieved_at, now, query.schedule, query.schedule_failures): key = "{}:{}".format(query.query_hash, query.data_source_id) outdated_queries[key] = query diff --git a/tests/test_models.py b/tests/test_models.py index 3ae389a1a8..81597def24 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -79,6 +79,12 @@ def test_outdated_queries_skips_unscheduled_queries(self): self.assertNotIn(query, queries) + def test_outdated_queries_skips_unscheduled_queries(self): + query = self.factory.create_query(schedule='60') + queries = models.Query.outdated_queries() + + self.assertNotIn(query, queries) + def test_outdated_queries_works_with_ttl_based_schedule(self): two_hours_ago = utcnow() - datetime.timedelta(hours=2) query = self.factory.create_query(schedule="3600")