diff --git a/app/celery/scheduled_tasks.py b/app/celery/scheduled_tasks.py index 1a2485904..f14aec240 100644 --- a/app/celery/scheduled_tasks.py +++ b/app/celery/scheduled_tasks.py @@ -104,11 +104,11 @@ def check_job_status(): thirty_minutes_ago = utc_now() - timedelta(minutes=30) thirty_five_minutes_ago = utc_now() - timedelta(minutes=35) - incomplete_in_progress_jobs = select(Job).filter( + incomplete_in_progress_jobs = select(Job).where( Job.job_status == JobStatus.IN_PROGRESS, between(Job.processing_started, thirty_five_minutes_ago, thirty_minutes_ago), ) - incomplete_pending_jobs = select(Job).filter( + incomplete_pending_jobs = select(Job).where( Job.job_status == JobStatus.PENDING, Job.scheduled_for.isnot(None), between(Job.scheduled_for, thirty_five_minutes_ago, thirty_minutes_ago), diff --git a/app/commands.py b/app/commands.py index 79bd3192d..40870ff04 100644 --- a/app/commands.py +++ b/app/commands.py @@ -656,7 +656,7 @@ def populate_annual_billing_with_defaults(year, missing_services_only): AnnualBilling.financial_year_start == year, ), ) - .filter(AnnualBilling.id == None) # noqa + .where(AnnualBilling.id == None) # noqa ) active_services = db.session.execute(stmt).scalars().all() else: @@ -665,7 +665,7 @@ def populate_annual_billing_with_defaults(year, missing_services_only): previous_year = year - 1 services_with_zero_free_allowance = ( db.session.query(AnnualBilling.service_id) - .filter( + .where( AnnualBilling.financial_year_start == previous_year, AnnualBilling.free_sms_fragment_limit == 0, ) diff --git a/app/dao/annual_billing_dao.py b/app/dao/annual_billing_dao.py index 8b6d092f4..c740c627a 100644 --- a/app/dao/annual_billing_dao.py +++ b/app/dao/annual_billing_dao.py @@ -43,7 +43,7 @@ def dao_update_annual_billing_for_future_years( ): stmt = ( update(AnnualBilling) - .filter( + .where( AnnualBilling.service_id == service_id, AnnualBilling.financial_year_start > financial_year_start, ) diff --git a/app/dao/complaint_dao.py b/app/dao/complaint_dao.py index d50c0aa0c..c306ee0fd 100644 --- a/app/dao/complaint_dao.py +++ b/app/dao/complaint_dao.py @@ -46,6 +46,6 @@ def fetch_count_of_complaints(start_date, end_date): stmt = ( select(func.count()) .select_from(Complaint) - .filter(Complaint.created_at >= start_date, Complaint.created_at < end_date) + .where(Complaint.created_at >= start_date, Complaint.created_at < end_date) ) return db.session.execute(stmt).scalar() or 0 diff --git a/app/dao/fact_billing_dao.py b/app/dao/fact_billing_dao.py index 07e00621a..bcb685c52 100644 --- a/app/dao/fact_billing_dao.py +++ b/app/dao/fact_billing_dao.py @@ -52,7 +52,7 @@ def fetch_sms_free_allowance_remainder_until_date(end_date): FactBilling.notification_type == NotificationType.SMS, ), ) - .filter( + .where( AnnualBilling.financial_year_start == billing_year, ) .group_by( @@ -110,7 +110,7 @@ def fetch_sms_billing_for_all_services(start_date, end_date): FactBilling, FactBilling.service_id == Service.id, ) - .filter( + .where( FactBilling.local_date >= start_date, FactBilling.local_date <= end_date, FactBilling.notification_type == NotificationType.SMS, @@ -250,7 +250,7 @@ def query_service_email_usage_for_year(service_id, year): FactBilling.billable_units.label("charged_units"), ) .select_from(FactBilling) - .filter( + .where( FactBilling.service_id == service_id, FactBilling.local_date >= year_start, FactBilling.local_date <= year_end, @@ -338,7 +338,7 @@ def query_service_sms_usage_for_year(service_id, year): ) .select_from(FactBilling) .join(AnnualBilling, AnnualBilling.service_id == service_id) - .filter( + .where( FactBilling.service_id == service_id, FactBilling.local_date >= year_start, FactBilling.local_date <= year_end, @@ -355,7 +355,7 @@ def delete_billing_data_for_service_for_day(process_day, service_id): Returns how many rows were deleted """ - stmt = delete(FactBilling).filter( + stmt = delete(FactBilling).where( FactBilling.local_date == process_day, FactBilling.service_id == service_id ) result = db.session.execute(stmt) @@ -403,7 +403,7 @@ def _query_for_billing_data(notification_type, start_date, end_date, service): func.count().label("notifications_sent"), ) .select_from(NotificationAllTimeView) - .filter( + .where( NotificationAllTimeView.status.in_( NotificationStatus.sent_email_types() ), @@ -438,7 +438,7 @@ def _query_for_billing_data(notification_type, start_date, end_date, service): func.count().label("notifications_sent"), ) .select_from(NotificationAllTimeView) - .filter( + .where( NotificationAllTimeView.status.in_( NotificationStatus.billable_sms_types() ), @@ -474,7 +474,7 @@ def get_service_ids_that_need_billing_populated(start_date, end_date): stmt = ( select(NotificationHistory.service_id) .select_from(NotificationHistory) - .filter( + .where( NotificationHistory.created_at >= start_date, NotificationHistory.created_at <= end_date, NotificationHistory.notification_type.in_( @@ -568,7 +568,7 @@ def fetch_email_usage_for_organization(organization_id, start_date, end_date): FactBilling, FactBilling.service_id == Service.id, ) - .filter( + .where( FactBilling.local_date >= start_date, FactBilling.local_date <= end_date, FactBilling.notification_type == NotificationType.EMAIL, @@ -623,7 +623,7 @@ def fetch_sms_billing_for_organization(organization_id, financial_year): ), ) .outerjoin(ft_billing_substmt, Service.id == ft_billing_substmt.c.service_id) - .filter( + .where( Service.organization_id == organization_id, Service.restricted.is_(False) ) .group_by(Service.id, Service.name, AnnualBilling.free_sms_fragment_limit) @@ -688,7 +688,7 @@ def query_organization_sms_usage_for_year(organization_id, year): FactBilling.notification_type == NotificationType.SMS, ), ) - .filter( + .where( Service.organization_id == organization_id, AnnualBilling.financial_year_start == year, ) @@ -812,9 +812,7 @@ def fetch_daily_volumes_for_platform(start_date, end_date): ) ).label("email_totals"), ) - .filter( - FactBilling.local_date >= start_date, FactBilling.local_date <= end_date - ) + .where(FactBilling.local_date >= start_date, FactBilling.local_date <= end_date) .group_by(FactBilling.local_date, FactBilling.notification_type) .subquery() ) @@ -857,7 +855,7 @@ def fetch_daily_sms_provider_volumes_for_platform(start_date, end_date): ).label("sms_cost"), ) .select_from(FactBilling) - .filter( + .where( FactBilling.notification_type == NotificationType.SMS, FactBilling.local_date >= start_date, FactBilling.local_date <= end_date, @@ -912,9 +910,7 @@ def fetch_volumes_by_service(start_date, end_date): ).label("email_totals"), ) .select_from(FactBilling) - .filter( - FactBilling.local_date >= start_date, FactBilling.local_date <= end_date - ) + .where(FactBilling.local_date >= start_date, FactBilling.local_date <= end_date) .group_by( FactBilling.local_date, FactBilling.service_id, @@ -930,7 +926,7 @@ def fetch_volumes_by_service(start_date, end_date): AnnualBilling.free_sms_fragment_limit, ) .select_from(AnnualBilling) - .filter(AnnualBilling.financial_year_start <= year_end_date) + .where(AnnualBilling.financial_year_start <= year_end_date) .group_by(AnnualBilling.service_id, AnnualBilling.free_sms_fragment_limit) .subquery() ) @@ -957,7 +953,7 @@ def fetch_volumes_by_service(start_date, end_date): .outerjoin( # include services without volume volume_stats, Service.id == volume_stats.c.service_id ) - .filter( + .where( Service.restricted.is_(False), Service.count_as_live.is_(True), Service.active.is_(True), diff --git a/app/dao/fact_notification_status_dao.py b/app/dao/fact_notification_status_dao.py index eaa902bc0..52a691453 100644 --- a/app/dao/fact_notification_status_dao.py +++ b/app/dao/fact_notification_status_dao.py @@ -33,7 +33,7 @@ def update_fact_notification_status(process_day, notification_type, service_id): end_date = get_midnight_in_utc(process_day + timedelta(days=1)) # delete any existing rows in case some no longer exist e.g. if all messages are sent - stmt = delete(FactNotificationStatus).filter( + stmt = delete(FactNotificationStatus).where( FactNotificationStatus.local_date == process_day, FactNotificationStatus.notification_type == notification_type, FactNotificationStatus.service_id == service_id, @@ -55,7 +55,7 @@ def update_fact_notification_status(process_day, notification_type, service_id): func.count().label("notification_count"), ) .select_from(NotificationAllTimeView) - .filter( + .where( NotificationAllTimeView.created_at >= start_date, NotificationAllTimeView.created_at < end_date, NotificationAllTimeView.notification_type == notification_type, @@ -97,7 +97,7 @@ def fetch_notification_status_for_service_by_month(start_date, end_date, service func.count(NotificationAllTimeView.id).label("count"), ) .select_from(NotificationAllTimeView) - .filter( + .where( NotificationAllTimeView.service_id == service_id, NotificationAllTimeView.created_at >= start_date, NotificationAllTimeView.created_at < end_date, @@ -122,7 +122,7 @@ def fetch_notification_status_for_service_for_day(fetch_day, service_id): func.count().label("count"), ) .select_from(Notification) - .filter( + .where( Notification.created_at >= get_midnight_in_utc(fetch_day), Notification.created_at < get_midnight_in_utc(fetch_day + timedelta(days=1)), @@ -260,7 +260,7 @@ def fetch_notification_status_totals_for_all_services(start_date, end_date): func.sum(FactNotificationStatus.notification_count).label("count"), ) .select_from(FactNotificationStatus) - .filter( + .where( FactNotificationStatus.local_date >= start_date, FactNotificationStatus.local_date <= end_date, ) @@ -279,7 +279,7 @@ def fetch_notification_status_totals_for_all_services(start_date, end_date): Notification.key_type.cast(db.Text), func.count().label("count"), ) - .filter(Notification.created_at >= today) + .where(Notification.created_at >= today) .group_by( Notification.notification_type, Notification.status, @@ -313,7 +313,7 @@ def fetch_notification_statuses_for_job(job_id): func.sum(FactNotificationStatus.notification_count).label("count"), ) .select_from(FactNotificationStatus) - .filter( + .where( FactNotificationStatus.job_id == job_id, ) .group_by(FactNotificationStatus.notification_status) @@ -338,7 +338,7 @@ def fetch_stats_for_all_services_by_date_range( func.sum(FactNotificationStatus.notification_count).label("count"), ) .select_from(FactNotificationStatus) - .filter( + .where( FactNotificationStatus.local_date >= start_date, FactNotificationStatus.local_date <= end_date, FactNotificationStatus.service_id == Service.id, @@ -357,7 +357,7 @@ def fetch_stats_for_all_services_by_date_range( ) ) if not include_from_test_key: - stats = stats.filter(FactNotificationStatus.key_type != KeyType.TEST) + stats = stats.where(FactNotificationStatus.key_type != KeyType.TEST) if start_date <= utc_now().date() <= end_date: today = get_midnight_in_utc(utc_now()) @@ -369,7 +369,7 @@ def fetch_stats_for_all_services_by_date_range( func.count(Notification.id).label("count"), ) .select_from(Notification) - .filter(Notification.created_at >= today) + .where(Notification.created_at >= today) .group_by( Notification.notification_type, Notification.status, @@ -377,7 +377,7 @@ def fetch_stats_for_all_services_by_date_range( ) ) if not include_from_test_key: - substmt = substmt.filter(Notification.key_type != KeyType.TEST) + substmt = substmt.where(Notification.key_type != KeyType.TEST) substmt = substmt.subquery() stats_for_today = select( @@ -435,7 +435,7 @@ def fetch_monthly_template_usage_for_service(start_date, end_date, service_id): func.sum(FactNotificationStatus.notification_count).label("count"), ) .join(Template, FactNotificationStatus.template_id == Template.id) - .filter( + .where( FactNotificationStatus.service_id == service_id, FactNotificationStatus.local_date >= start_date, FactNotificationStatus.local_date <= end_date, @@ -473,7 +473,7 @@ def fetch_monthly_template_usage_for_service(start_date, end_date, service_id): Template, Notification.template_id == Template.id, ) - .filter( + .where( Notification.created_at >= today, Notification.service_id == service_id, Notification.key_type != KeyType.TEST, @@ -539,14 +539,14 @@ def get_total_notifications_for_date_range(start_date, end_date): ) ).label("sms"), ) - .filter( + .where( FactNotificationStatus.key_type != KeyType.TEST, ) .group_by(FactNotificationStatus.local_date) .order_by(FactNotificationStatus.local_date) ) if start_date and end_date: - stmt = stmt.filter( + stmt = stmt.where( FactNotificationStatus.local_date >= start_date, FactNotificationStatus.local_date <= end_date, ) @@ -629,7 +629,7 @@ def fetch_monthly_notification_statuses_per_service(start_date, end_date): ).label("count_sent"), ) .join(Service, FactNotificationStatus.service_id == Service.id) - .filter( + .where( FactNotificationStatus.notification_status != NotificationStatus.CREATED, Service.active.is_(True), FactNotificationStatus.key_type != KeyType.TEST, diff --git a/app/dao/inbound_numbers_dao.py b/app/dao/inbound_numbers_dao.py index a86ba530e..58c7df03a 100644 --- a/app/dao/inbound_numbers_dao.py +++ b/app/dao/inbound_numbers_dao.py @@ -11,19 +11,19 @@ def dao_get_inbound_numbers(): def dao_get_available_inbound_numbers(): - stmt = select(InboundNumber).filter( + stmt = select(InboundNumber).where( InboundNumber.active, InboundNumber.service_id.is_(None) ) return db.session.execute(stmt).scalars().all() def dao_get_inbound_number_for_service(service_id): - stmt = select(InboundNumber).filter(InboundNumber.service_id == service_id) + stmt = select(InboundNumber).where(InboundNumber.service_id == service_id) return db.session.execute(stmt).scalars().first() def dao_get_inbound_number(inbound_number_id): - stmt = select(InboundNumber).filter(InboundNumber.id == inbound_number_id) + stmt = select(InboundNumber).where(InboundNumber.id == inbound_number_id) return db.session.execute(stmt).scalars().first() @@ -35,7 +35,7 @@ def dao_set_inbound_number_to_service(service_id, inbound_number): @autocommit def dao_set_inbound_number_active_flag(service_id, active): - stmt = select(InboundNumber).filter(InboundNumber.service_id == service_id) + stmt = select(InboundNumber).where(InboundNumber.service_id == service_id) inbound_number = db.session.execute(stmt).scalars().first() inbound_number.active = active diff --git a/app/dao/inbound_sms_dao.py b/app/dao/inbound_sms_dao.py index e9a84ffa3..c54cf8c33 100644 --- a/app/dao/inbound_sms_dao.py +++ b/app/dao/inbound_sms_dao.py @@ -20,15 +20,15 @@ def dao_get_inbound_sms_for_service( ): q = ( select(InboundSms) - .filter(InboundSms.service_id == service_id) + .where(InboundSms.service_id == service_id) .order_by(InboundSms.created_at.desc()) ) if limit_days is not None: start_date = midnight_n_days_ago(limit_days) - q = q.filter(InboundSms.created_at >= start_date) + q = q.where(InboundSms.created_at >= start_date) if user_number: - q = q.filter(InboundSms.user_number == user_number) + q = q.where(InboundSms.user_number == user_number) if limit: q = q.limit(limit) @@ -47,7 +47,7 @@ def dao_get_paginated_inbound_sms_for_service_for_public_api( if older_than: older_than_created_at = ( db.session.query(InboundSms.created_at) - .filter(InboundSms.id == older_than) + .where(InboundSms.id == older_than) .scalar_subquery() ) filters.append(InboundSms.created_at < older_than_created_at) @@ -72,7 +72,7 @@ def dao_count_inbound_sms_for_service(service_id, limit_days): stmt = ( select(func.count()) .select_from(InboundSms) - .filter( + .where( InboundSms.service_id == service_id, InboundSms.created_at >= midnight_n_days_ago(limit_days), ) @@ -117,7 +117,7 @@ def _delete_inbound_sms(datetime_to_delete_from, query_filter): subquery = ( select(InboundSms.id) - .filter(InboundSms.created_at < datetime_to_delete_from, *query_filter) + .where(InboundSms.created_at < datetime_to_delete_from, *query_filter) .limit(query_limit) .subquery() ) @@ -128,7 +128,7 @@ def _delete_inbound_sms(datetime_to_delete_from, query_filter): while number_deleted > 0: _insert_inbound_sms_history(subquery, query_limit=query_limit) - stmt = delete(InboundSms).filter(InboundSms.id.in_(subquery)) + stmt = delete(InboundSms).where(InboundSms.id.in_(subquery)) number_deleted = db.session.execute(stmt).rowcount db.session.commit() deleted += number_deleted @@ -145,7 +145,7 @@ def delete_inbound_sms_older_than_retention(): stmt = ( select(ServiceDataRetention) .join(ServiceDataRetention.service) - .filter(ServiceDataRetention.notification_type == NotificationType.SMS) + .where(ServiceDataRetention.notification_type == NotificationType.SMS) ) flexible_data_retention = db.session.execute(stmt).scalars().all() diff --git a/app/dao/invited_org_user_dao.py b/app/dao/invited_org_user_dao.py index 823e9a8f4..a44f7123e 100644 --- a/app/dao/invited_org_user_dao.py +++ b/app/dao/invited_org_user_dao.py @@ -52,7 +52,7 @@ def get_invited_org_users_for_organization(organization_id): def delete_org_invitations_created_more_than_two_days_ago(): deleted = ( db.session.query(InvitedOrganizationUser) - .filter(InvitedOrganizationUser.created_at <= utc_now() - timedelta(days=2)) + .where(InvitedOrganizationUser.created_at <= utc_now() - timedelta(days=2)) .delete() ) db.session.commit() diff --git a/app/dao/invited_user_dao.py b/app/dao/invited_user_dao.py index 49f953e26..31d61dc52 100644 --- a/app/dao/invited_user_dao.py +++ b/app/dao/invited_user_dao.py @@ -50,7 +50,7 @@ def get_invited_users_for_service(service_id): def expire_invitations_created_more_than_two_days_ago(): expired = ( db.session.query(InvitedUser) - .filter( + .where( InvitedUser.created_at <= utc_now() - timedelta(days=2), InvitedUser.status.in_((InvitedUserStatus.PENDING,)), ) diff --git a/app/dao/jobs_dao.py b/app/dao/jobs_dao.py index ae6dec628..c24fafabd 100644 --- a/app/dao/jobs_dao.py +++ b/app/dao/jobs_dao.py @@ -21,7 +21,7 @@ from app.utils import midnight_n_days_ago, utc_now def dao_get_notification_outcomes_for_job(service_id, job_id): stmt = ( select(func.count(Notification.status).label("count"), Notification.status) - .filter(Notification.service_id == service_id, Notification.job_id == job_id) + .where(Notification.service_id == service_id, Notification.job_id == job_id) .group_by(Notification.status) ) notification_statuses = db.session.execute(stmt).all() @@ -30,7 +30,7 @@ def dao_get_notification_outcomes_for_job(service_id, job_id): stmt = select( FactNotificationStatus.notification_count.label("count"), FactNotificationStatus.notification_status.label("status"), - ).filter( + ).where( FactNotificationStatus.service_id == service_id, FactNotificationStatus.job_id == job_id, ) @@ -44,7 +44,7 @@ def dao_get_job_by_service_id_and_job_id(service_id, job_id): def dao_get_unfinished_jobs(): - stmt = select(Job).filter(Job.processing_finished.is_(None)) + stmt = select(Job).where(Job.processing_finished.is_(None)) return db.session.execute(stmt).all() @@ -67,13 +67,13 @@ def dao_get_jobs_by_service_id( query_filter.append(Job.job_status.in_(statuses)) total_items = db.session.execute( - select(func.count()).select_from(Job).filter(*query_filter) + select(func.count()).select_from(Job).where(*query_filter) ).scalar_one() offset = (page - 1) * page_size stmt = ( select(Job) - .filter(*query_filter) + .where(*query_filter) .order_by(Job.processing_started.desc(), Job.created_at.desc()) .limit(page_size) .offset(offset) @@ -89,7 +89,7 @@ def dao_get_scheduled_job_stats( stmt = select( func.count(Job.id), func.min(Job.scheduled_for), - ).filter( + ).where( Job.service_id == service_id, Job.job_status == JobStatus.SCHEDULED, ) @@ -117,7 +117,7 @@ def dao_set_scheduled_jobs_to_pending(): """ stmt = ( select(Job) - .filter( + .where( Job.job_status == JobStatus.SCHEDULED, Job.scheduled_for < utc_now(), ) @@ -136,7 +136,7 @@ def dao_set_scheduled_jobs_to_pending(): def dao_get_future_scheduled_job_by_id_and_service_id(job_id, service_id): - stmt = select(Job).filter( + stmt = select(Job).where( Job.service_id == service_id, Job.id == job_id, Job.job_status == JobStatus.SCHEDULED, @@ -177,7 +177,7 @@ def dao_update_job(job): def dao_get_jobs_older_than_data_retention(notification_types): - stmt = select(ServiceDataRetention).filter( + stmt = select(ServiceDataRetention).where( ServiceDataRetention.notification_type.in_(notification_types) ) flexible_data_retention = db.session.execute(stmt).scalars().all() @@ -188,7 +188,7 @@ def dao_get_jobs_older_than_data_retention(notification_types): stmt = ( select(Job) .join(Template) - .filter( + .where( func.coalesce(Job.scheduled_for, Job.created_at) < end_date, Job.archived == False, # noqa Template.template_type == f.notification_type, @@ -209,7 +209,7 @@ def dao_get_jobs_older_than_data_retention(notification_types): stmt = ( select(Job) .join(Template) - .filter( + .where( func.coalesce(Job.scheduled_for, Job.created_at) < end_date, Job.archived == False, # noqa Template.template_type == notification_type, @@ -229,7 +229,7 @@ def find_jobs_with_missing_rows(): yesterday = utc_now() - timedelta(days=1) jobs_with_rows_missing = ( select(Job) - .filter( + .where( Job.job_status == JobStatus.FINISHED, Job.processing_finished < ten_minutes_ago, Job.processing_finished > yesterday, @@ -258,6 +258,6 @@ def find_missing_row_for_job(job_id, job_size): Notification.job_id == job_id, ), ) - .filter(Notification.job_row_number == None) # noqa + .where(Notification.job_row_number == None) # noqa ) return db.session.execute(query).all() diff --git a/app/dao/notifications_dao.py b/app/dao/notifications_dao.py index d08dbdc6d..416e8222e 100644 --- a/app/dao/notifications_dao.py +++ b/app/dao/notifications_dao.py @@ -30,7 +30,7 @@ from notifications_utils.recipients import ( def dao_get_last_date_template_was_used(template_id, service_id): last_date_from_notifications = ( db.session.query(functions.max(Notification.created_at)) - .filter( + .where( Notification.service_id == service_id, Notification.template_id == template_id, Notification.key_type != KeyType.TEST, @@ -43,7 +43,7 @@ def dao_get_last_date_template_was_used(template_id, service_id): last_date = ( db.session.query(functions.max(FactNotificationStatus.local_date)) - .filter( + .where( FactNotificationStatus.template_id == template_id, FactNotificationStatus.key_type != KeyType.TEST, ) @@ -126,9 +126,7 @@ def update_notification_status_by_id( notification_id, status, sent_by=None, provider_response=None, carrier=None ): stmt = ( - select(Notification) - .with_for_update() - .filter(Notification.id == notification_id) + select(Notification).with_for_update().where(Notification.id == notification_id) ) notification = db.session.execute(stmt).scalars().first() @@ -173,7 +171,7 @@ def update_notification_status_by_id( @autocommit def update_notification_status_by_reference(reference, status): # this is used to update emails - stmt = select(Notification).filter(Notification.reference == reference) + stmt = select(Notification).where(Notification.reference == reference) notification = db.session.execute(stmt).scalars().first() if not notification: @@ -271,7 +269,7 @@ def get_notification_by_id(notification_id, service_id=None, _raise=False): if service_id: filters.append(Notification.service_id == service_id) - stmt = select(Notification).filter(*filters) + stmt = select(Notification).where(*filters) return ( db.session.execute(stmt).scalars().one() @@ -307,7 +305,7 @@ def get_notifications_for_service( if older_than is not None: older_than_created_at = ( db.session.query(Notification.created_at) - .filter(Notification.id == older_than) + .where(Notification.id == older_than) .as_scalar() ) filters.append(Notification.created_at < older_than_created_at) @@ -457,7 +455,7 @@ def move_notifications_to_notification_history( deleted += delete_count_per_call # Deleting test Notifications, test notifications are not persisted to NotificationHistory - stmt = delete(Notification).filter( + stmt = delete(Notification).where( Notification.notification_type == notification_type, Notification.service_id == service_id, Notification.created_at < timestamp_to_delete_backwards_from, @@ -471,7 +469,7 @@ def move_notifications_to_notification_history( @autocommit def dao_delete_notifications_by_id(notification_id): - db.session.query(Notification).filter(Notification.id == notification_id).delete( + db.session.query(Notification).where(Notification.id == notification_id).delete( synchronize_session="fetch" ) @@ -487,7 +485,7 @@ def dao_timeout_notifications(cutoff_time, limit=100000): stmt = ( select(Notification) - .filter( + .where( Notification.created_at < cutoff_time, Notification.status.in_(current_statuses), Notification.notification_type.in_( @@ -500,7 +498,7 @@ def dao_timeout_notifications(cutoff_time, limit=100000): stmt = ( update(Notification) - .filter(Notification.id.in_([n.id for n in notifications])) + .where(Notification.id.in_([n.id for n in notifications])) .values({"status": new_status, "updated_at": updated_at}) ) db.session.execute(stmt) @@ -513,7 +511,7 @@ def dao_timeout_notifications(cutoff_time, limit=100000): def dao_update_notifications_by_reference(references, update_dict): stmt = ( update(Notification) - .filter(Notification.reference.in_(references)) + .where(Notification.reference.in_(references)) .values(update_dict) ) result = db.session.execute(stmt) @@ -523,7 +521,7 @@ def dao_update_notifications_by_reference(references, update_dict): if updated_count != len(references): stmt = ( update(NotificationHistory) - .filter(NotificationHistory.reference.in_(references)) + .where(NotificationHistory.reference.in_(references)) .values(update_dict) ) result = db.session.execute(stmt) @@ -586,7 +584,7 @@ def dao_get_notifications_by_recipient_or_reference( results = ( db.session.query(Notification) - .filter(*filters) + .where(*filters) .order_by(desc(Notification.created_at)) .paginate(page=page, per_page=page_size, count=False, error_out=error_out) ) @@ -594,7 +592,7 @@ def dao_get_notifications_by_recipient_or_reference( def dao_get_notification_by_reference(reference): - stmt = select(Notification).filter(Notification.reference == reference) + stmt = select(Notification).where(Notification.reference == reference) return db.session.execute(stmt).scalars().one() @@ -602,10 +600,10 @@ def dao_get_notification_history_by_reference(reference): try: # This try except is necessary because in test keys and research mode does not create notification history. # Otherwise we could just search for the NotificationHistory object - stmt = select(Notification).filter(Notification.reference == reference) + stmt = select(Notification).where(Notification.reference == reference) return db.session.execute(stmt).scalars().one() except NoResultFound: - stmt = select(NotificationHistory).filter( + stmt = select(NotificationHistory).where( NotificationHistory.reference == reference ) return db.session.execute(stmt).scalars().one() @@ -648,7 +646,7 @@ def dao_get_notifications_processing_time_stats(start_date, end_date): def dao_get_last_notification_added_for_job_id(job_id): stmt = ( select(Notification) - .filter(Notification.job_id == job_id) + .where(Notification.job_id == job_id) .order_by(Notification.job_row_number.desc()) ) last_notification_added = db.session.execute(stmt).scalars().first() @@ -659,7 +657,7 @@ def dao_get_last_notification_added_for_job_id(job_id): def notifications_not_yet_sent(should_be_sending_after_seconds, notification_type): older_than_date = utc_now() - timedelta(seconds=should_be_sending_after_seconds) - stmt = select(Notification).filter( + stmt = select(Notification).where( Notification.created_at <= older_than_date, Notification.notification_type == notification_type, Notification.status == NotificationStatus.CREATED, @@ -691,7 +689,7 @@ def get_service_ids_with_notifications_before(notification_type, timestamp): return { row.service_id for row in db.session.query(Notification.service_id) - .filter( + .where( Notification.notification_type == notification_type, Notification.created_at < timestamp, ) @@ -705,7 +703,7 @@ def get_service_ids_with_notifications_on_date(notification_type, date): notification_table_query = db.session.query( Notification.service_id.label("service_id") - ).filter( + ).where( Notification.notification_type == notification_type, # using >= + < is much more efficient than date(created_at) Notification.created_at >= start_date, @@ -716,7 +714,7 @@ def get_service_ids_with_notifications_on_date(notification_type, date): # provided the task to populate it has run before they were archived. ft_status_table_query = db.session.query( FactNotificationStatus.service_id.label("service_id") - ).filter( + ).where( FactNotificationStatus.notification_type == notification_type, FactNotificationStatus.local_date == date, ) diff --git a/app/dao/organization_dao.py b/app/dao/organization_dao.py index 4d3ae993e..75aa5f68f 100644 --- a/app/dao/organization_dao.py +++ b/app/dao/organization_dao.py @@ -17,7 +17,7 @@ def dao_count_organizations_with_live_services(): stmt = ( select(func.count(func.distinct(Organization.id))) .join(Organization.services) - .filter( + .where( Service.active.is_(True), Service.restricted.is_(False), Service.count_as_live.is_(True), @@ -59,9 +59,7 @@ def dao_get_organization_by_email_address(email_address): def dao_get_organization_by_service_id(service_id): stmt = ( - select(Organization) - .join(Organization.services) - .where(Service.id == service_id) + select(Organization).join(Organization.services).where(Service.id == service_id) ) return db.session.execute(stmt).scalars().first() @@ -127,7 +125,7 @@ def dao_get_users_for_organization(organization_id): return ( db.session.query(User) .join(User.organizations) - .filter(Organization.id == organization_id, User.state == "active") + .where(Organization.id == organization_id, User.state == "active") .order_by(User.created_at) .all() ) diff --git a/app/dao/provider_details_dao.py b/app/dao/provider_details_dao.py index 75adf5999..81a8cc3d3 100644 --- a/app/dao/provider_details_dao.py +++ b/app/dao/provider_details_dao.py @@ -109,7 +109,7 @@ def dao_get_provider_stats(): "current_month_billable_sms" ), ) - .filter( + .where( FactBilling.notification_type == NotificationType.SMS, FactBilling.local_date >= first_day_of_the_month, ) diff --git a/app/dao/service_email_reply_to_dao.py b/app/dao/service_email_reply_to_dao.py index 56e98f6a4..bbb0b8751 100644 --- a/app/dao/service_email_reply_to_dao.py +++ b/app/dao/service_email_reply_to_dao.py @@ -10,7 +10,7 @@ from app.models import ServiceEmailReplyTo def dao_get_reply_to_by_service_id(service_id): reply_to = ( db.session.query(ServiceEmailReplyTo) - .filter( + .where( ServiceEmailReplyTo.service_id == service_id, ServiceEmailReplyTo.archived == False, # noqa ) @@ -25,7 +25,7 @@ def dao_get_reply_to_by_service_id(service_id): def dao_get_reply_to_by_id(service_id, reply_to_id): reply_to = ( db.session.query(ServiceEmailReplyTo) - .filter( + .where( ServiceEmailReplyTo.service_id == service_id, ServiceEmailReplyTo.id == reply_to_id, ServiceEmailReplyTo.archived == False, # noqa diff --git a/app/dao/service_permissions_dao.py b/app/dao/service_permissions_dao.py index 0793b35b6..8ea40b614 100644 --- a/app/dao/service_permissions_dao.py +++ b/app/dao/service_permissions_dao.py @@ -7,7 +7,7 @@ from app.models import ServicePermission def dao_fetch_service_permissions(service_id): - stmt = select(ServicePermission).filter(ServicePermission.service_id == service_id) + stmt = select(ServicePermission).where(ServicePermission.service_id == service_id) return db.session.execute(stmt).scalars().all() diff --git a/app/dao/service_user_dao.py b/app/dao/service_user_dao.py index 43277fc93..d1c30ecb5 100644 --- a/app/dao/service_user_dao.py +++ b/app/dao/service_user_dao.py @@ -17,7 +17,7 @@ def dao_get_active_service_users(service_id): stmt = ( select(ServiceUser) .join(User, User.id == ServiceUser.user_id) - .filter(User.state == "active", ServiceUser.service_id == service_id) + .where(User.state == "active", ServiceUser.service_id == service_id) ) return db.session.execute(stmt).scalars().all() diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index 35aa629f1..60e846dae 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -96,7 +96,7 @@ def dao_fetch_live_services_data(): this_year_ft_billing = ( select(FactBilling) - .filter( + .where( FactBilling.local_date >= year_start_date, FactBilling.local_date <= year_end_date, ) @@ -145,7 +145,7 @@ def dao_fetch_live_services_data(): this_year_ft_billing, Service.id == this_year_ft_billing.c.service_id ) .outerjoin(User, Service.go_live_user_id == User.id) - .filter( + .where( Service.count_as_live.is_(True), Service.active.is_(True), Service.restricted.is_(False), @@ -221,7 +221,7 @@ def dao_fetch_service_by_id_with_api_keys(service_id, only_active=False): .options(joinedload(Service.api_keys)) ) if only_active: - stmt = stmt.filter(Service.active) + stmt = stmt.where(Service.active) return db.session.execute(stmt).scalars().unique().one() @@ -229,12 +229,12 @@ def dao_fetch_all_services_by_user(user_id, only_active=False): stmt = ( select(Service) - .filter(Service.users.any(id=user_id)) + .where(Service.users.any(id=user_id)) .order_by(asc(Service.created_at)) .options(joinedload(Service.users)) ) if only_active: - stmt = stmt.filter(Service.active) + stmt = stmt.where(Service.active) return db.session.execute(stmt).scalars().unique().all() @@ -262,7 +262,7 @@ def dao_archive_service(service_id): joinedload(Service.templates).subqueryload(Template.template_redacted), joinedload(Service.api_keys), ) - .filter(Service.id == service_id) + .where(Service.id == service_id) ) service = db.session.execute(stmt).scalars().unique().one() @@ -283,7 +283,7 @@ def dao_fetch_service_by_id_and_user(service_id, user_id): stmt = ( select(Service) - .filter(Service.users.any(id=user_id), Service.id == service_id) + .where(Service.users.any(id=user_id), Service.id == service_id) .options(joinedload(Service.users)) ) result = db.session.execute(stmt).scalar_one() @@ -396,7 +396,7 @@ def delete_service_and_all_associated_db_objects(service): subq = select(Template.id).where(Template.service == service).subquery() - stmt = delete(TemplateRedacted).filter(TemplateRedacted.template_id.in_(subq)) + stmt = delete(TemplateRedacted).where(TemplateRedacted.template_id.in_(subq)) _delete_commit(stmt) _delete_commit(delete(ServiceSmsSender).where(ServiceSmsSender.service == service)) @@ -426,7 +426,7 @@ def delete_service_and_all_associated_db_objects(service): _delete_commit(delete(AnnualBilling).where(AnnualBilling.service_id == service.id)) stmt = ( - select(VerifyCode).join(User).filter(User.id.in_([x.id for x in service.users])) + select(VerifyCode).join(User).where(User.id.in_([x.id for x in service.users])) ) verify_codes = db.session.execute(stmt).scalars().all() list(map(db.session.delete, verify_codes)) @@ -452,7 +452,7 @@ def dao_fetch_todays_stats_for_service(service_id): Notification.status, func.count(Notification.id).label("count"), ) - .filter( + .where( Notification.service_id == service_id, Notification.key_type != KeyType.TEST, Notification.created_at >= start_date, @@ -476,7 +476,7 @@ def dao_fetch_stats_for_service_from_days(service_id, start_date, end_date): func.date_trunc("day", NotificationAllTimeView.created_at).label("day"), func.count(NotificationAllTimeView.id).label("count"), ) - .filter( + .where( NotificationAllTimeView.service_id == service_id, NotificationAllTimeView.key_type != KeyType.TEST, NotificationAllTimeView.created_at >= start_date, @@ -505,7 +505,7 @@ def dao_fetch_stats_for_service_from_days_for_user( func.count(NotificationAllTimeView.id).label("count"), ) .select_from(NotificationAllTimeView) - .filter( + .where( NotificationAllTimeView.service_id == service_id, NotificationAllTimeView.key_type != KeyType.TEST, NotificationAllTimeView.created_at >= start_date, @@ -535,7 +535,7 @@ def dao_fetch_todays_stats_for_all_services( Notification.service_id, func.count(Notification.id).label("count"), ) - .filter( + .where( Notification.created_at >= start_date, Notification.created_at < end_date ) .group_by( @@ -544,7 +544,7 @@ def dao_fetch_todays_stats_for_all_services( ) if not include_from_test_key: - substmt = substmt.filter(Notification.key_type != KeyType.TEST) + substmt = substmt.where(Notification.key_type != KeyType.TEST) substmt = substmt.subquery() @@ -564,7 +564,7 @@ def dao_fetch_todays_stats_for_all_services( ) if only_active: - stmt = stmt.filter(Service.active) + stmt = stmt.where(Service.active) return db.session.execute(stmt).all() @@ -579,7 +579,7 @@ def dao_suspend_service(service_id): stmt = ( select(Service) .options(joinedload(Service.api_keys)) - .filter(Service.id == service_id) + .where(Service.id == service_id) ) service = db.session.execute(stmt).scalars().unique().one() @@ -612,7 +612,7 @@ def dao_find_services_sending_to_tv_numbers(start_date, end_date, threshold=500) Notification.service_id.label("service_id"), func.count(Notification.id).label("notification_count"), ) - .filter( + .where( Notification.service_id == Service.id, Notification.created_at >= start_date, Notification.created_at <= end_date, @@ -636,7 +636,7 @@ def dao_find_services_with_high_failure_rates(start_date, end_date, threshold=10 func.count(Notification.id).label("total_count"), Notification.service_id.label("service_id"), ) - .filter( + .where( Notification.service_id == Service.id, Notification.created_at >= start_date, Notification.created_at <= end_date, @@ -664,7 +664,7 @@ def dao_find_services_with_high_failure_rates(start_date, end_date, threshold=10 ).label("permanent_failure_rate"), ) .join(substmt, substmt.c.service_id == Notification.service_id) - .filter( + .where( Notification.service_id == Service.id, Notification.created_at >= start_date, Notification.created_at <= end_date, @@ -696,7 +696,7 @@ def get_live_services_with_organization(): ) .select_from(Service) .outerjoin(Service.organization) - .filter( + .where( Service.count_as_live.is_(True), Service.active.is_(True), Service.restricted.is_(False), @@ -718,7 +718,7 @@ def fetch_notification_stats_for_service_by_month_by_user( (NotificationAllTimeView.status).label("notification_status"), func.count(NotificationAllTimeView.id).label("count"), ) - .filter( + .where( NotificationAllTimeView.service_id == service_id, NotificationAllTimeView.created_at >= start_date, NotificationAllTimeView.created_at < end_date, diff --git a/app/dao/template_folder_dao.py b/app/dao/template_folder_dao.py index 269f407e0..36416edd6 100644 --- a/app/dao/template_folder_dao.py +++ b/app/dao/template_folder_dao.py @@ -6,14 +6,14 @@ from app.models import TemplateFolder def dao_get_template_folder_by_id_and_service_id(template_folder_id, service_id): - stmt = select(TemplateFolder).filter( + stmt = select(TemplateFolder).where( TemplateFolder.id == template_folder_id, TemplateFolder.service_id == service_id ) return db.session.execute(stmt).scalars().one() def dao_get_valid_template_folders_by_id(folder_ids): - stmt = select(TemplateFolder).filter(TemplateFolder.id.in_(folder_ids)) + stmt = select(TemplateFolder).where(TemplateFolder.id.in_(folder_ids)) return db.session.execute(stmt).scalars().all() diff --git a/app/dao/users_dao.py b/app/dao/users_dao.py index f13974474..8a411b27e 100644 --- a/app/dao/users_dao.py +++ b/app/dao/users_dao.py @@ -54,7 +54,7 @@ def get_login_gov_user(login_uuid, email_address): return user # Remove this 1 July 2025, all users should have login.gov uuids by now - stmt = select(User).filter(User.email_address.ilike(email_address)) + stmt = select(User).where(User.email_address.ilike(email_address)) user = db.session.execute(stmt).scalars().first() if user: @@ -113,7 +113,7 @@ def get_user_code(user, code, code_type): def delete_codes_older_created_more_than_a_day_ago(): - stmt = delete(VerifyCode).filter( + stmt = delete(VerifyCode).where( VerifyCode.created_at < utc_now() - timedelta(hours=24) ) @@ -141,7 +141,7 @@ def delete_user_verify_codes(user): def count_user_verify_codes(user): - stmt = select(func.count(VerifyCode.id)).filter( + stmt = select(func.count(VerifyCode.id)).where( VerifyCode.user == user, VerifyCode.expiry_datetime > utc_now(), VerifyCode.code_used.is_(False), @@ -163,13 +163,13 @@ def get_users(): def get_user_by_email(email): - stmt = select(User).filter(func.lower(User.email_address) == func.lower(email)) + stmt = select(User).where(func.lower(User.email_address) == func.lower(email)) return db.session.execute(stmt).scalars().one() def get_users_by_partial_email(email): email = escape_special_characters(email) - stmt = select(User).filter(User.email_address.ilike("%{}%".format(email))) + stmt = select(User).where(User.email_address.ilike("%{}%".format(email))) return db.session.execute(stmt).scalars().all() @@ -200,7 +200,7 @@ def get_user_and_accounts(user_id): # that we have put is functionally doing the same thing as before stmt = ( select(User) - .filter(User.id == user_id) + .where(User.id == user_id) .options( # eagerly load the user's services and organizations, and also the service's org and vice versa # (so we can see if the user knows about it) diff --git a/tests/app/dao/test_inbound_numbers_dao.py b/tests/app/dao/test_inbound_numbers_dao.py index efb1e376c..e7a8c93be 100644 --- a/tests/app/dao/test_inbound_numbers_dao.py +++ b/tests/app/dao/test_inbound_numbers_dao.py @@ -37,7 +37,7 @@ def test_set_service_id_on_inbound_number(notify_db_session, sample_inbound_numb dao_set_inbound_number_to_service(service.id, numbers[0]) - stmt = select(InboundNumber).filter(InboundNumber.service_id == service.id) + stmt = select(InboundNumber).where(InboundNumber.service_id == service.id) res = db.session.execute(stmt).scalars().all() assert len(res) == 1 diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index cb82c929c..d4463ca10 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -107,7 +107,7 @@ def _get_first_service(): def _get_service_by_id(service_id): - stmt = select(Service).filter(Service.id == service_id) + stmt = select(Service).where(Service.id == service_id) service = db.session.execute(stmt).scalars().one() return service