move days_ago to utils and make it tz aware

it's used in a few places - it should definitely know what timezones
are and return datetimes rather than dates, which are hard to work with
in terms of figuring out how tz aware they are.
This commit is contained in:
Leo Hemsted
2018-04-12 10:47:16 +01:00
parent 67019fc5a1
commit 5e702449cb
5 changed files with 35 additions and 15 deletions

View File

@@ -28,8 +28,3 @@ class DAOClass(object):
db.session.delete(inst)
if _commit:
db.session.commit()
def days_ago(number_of_days):
from datetime import date, timedelta
return date.today() - timedelta(days=number_of_days)

View File

@@ -4,15 +4,13 @@ from datetime import datetime, timedelta
from flask import current_app
from notifications_utils.statsd_decorators import statsd
from sqlalchemy import (
Date as sql_date,
asc,
cast,
desc,
func,
)
from app import db
from app.dao import days_ago
from app.utils import days_ago
from app.models import (
Job,
JOB_STATUS_PENDING,
@@ -53,7 +51,7 @@ def dao_get_jobs_by_service_id(service_id, limit_days=None, page=1, page_size=50
Job.original_file_name != current_app.config['ONE_OFF_MESSAGE_FILENAME'],
]
if limit_days is not None:
query_filter.append(cast(Job.created_at, sql_date) >= days_ago(limit_days))
query_filter.append(Job.created_at >= days_ago(limit_days))
if statuses is not None and statuses != ['']:
query_filter.append(
Job.job_status.in_(statuses)

View File

@@ -21,7 +21,7 @@ from sqlalchemy.sql import functions
from notifications_utils.international_billing_rates import INTERNATIONAL_BILLING_RATES
from app import db, create_uuid
from app.dao import days_ago
from app.utils import days_ago
from app.errors import InvalidRequest
from app.models import (
Notification,
@@ -75,7 +75,6 @@ def dao_get_template_usage(service_id, limit_days=None, day=None):
).group_by(
Notification.template_id
).subquery()
query = db.session.query(
Template.id.label('template_id'),
Template.name,
@@ -256,8 +255,7 @@ def get_notifications_for_service(
filters = [Notification.service_id == service_id]
if limit_days is not None:
days_ago = date.today() - timedelta(days=limit_days)
filters.append(func.date(Notification.created_at) >= days_ago)
filters.append(Notification.created_at >= days_ago(limit_days))
if older_than is not None:
older_than_created_at = db.session.query(