merge from main

This commit is contained in:
Kenneth Kehl
2023-08-25 08:57:24 -07:00
parent 1463d8421b
commit c6eb007386
29 changed files with 42 additions and 163 deletions
+1
View File
@@ -5,6 +5,7 @@ name = "pypi"
[packages] [packages]
ago = "~=0.0.95" ago = "~=0.0.95"
black = "==23.7.0"
blinker = "~=1.4" blinker = "~=1.4"
exceptiongroup = "==1.1.3" exceptiongroup = "==1.1.3"
flask = "~=2.3" flask = "~=2.3"
+3 -9
View File
@@ -104,18 +104,12 @@ from app.notify_client.organizations_api_client import organizations_client
from app.notify_client.performance_dashboard_api_client import ( from app.notify_client.performance_dashboard_api_client import (
performance_dashboard_api_client, performance_dashboard_api_client,
) )
from app.notify_client.platform_stats_api_client import ( from app.notify_client.platform_stats_api_client import platform_stats_api_client
platform_stats_api_client,
)
from app.notify_client.provider_client import provider_client from app.notify_client.provider_client import provider_client
from app.notify_client.service_api_client import service_api_client from app.notify_client.service_api_client import service_api_client
from app.notify_client.status_api_client import status_api_client from app.notify_client.status_api_client import status_api_client
from app.notify_client.template_folder_api_client import ( from app.notify_client.template_folder_api_client import template_folder_api_client
template_folder_api_client, from app.notify_client.template_statistics_api_client import template_statistics_client
)
from app.notify_client.template_statistics_api_client import (
template_statistics_client,
)
from app.notify_client.upload_api_client import upload_api_client from app.notify_client.upload_api_client import upload_api_client
from app.notify_client.user_api_client import user_api_client from app.notify_client.user_api_client import user_api_client
from app.url_converters import ( from app.url_converters import (
+1 -4
View File
@@ -14,10 +14,7 @@ from flask import Markup, url_for
from notifications_utils.field import Field from notifications_utils.field import Field
from notifications_utils.formatters import make_quotes_smart from notifications_utils.formatters import make_quotes_smart
from notifications_utils.formatters import nl2br as utils_nl2br from notifications_utils.formatters import nl2br as utils_nl2br
from notifications_utils.recipients import ( from notifications_utils.recipients import InvalidPhoneError, validate_phone_number
InvalidPhoneError,
validate_phone_number,
)
from notifications_utils.take import Take from notifications_utils.take import Take
from app.utils.time import parse_naive_dt from app.utils.time import parse_naive_dt
+1 -4
View File
@@ -12,10 +12,7 @@ from flask_wtf.file import FileField as FileField_wtf
from flask_wtf.file import FileSize from flask_wtf.file import FileSize
from notifications_utils.formatters import strip_all_whitespace from notifications_utils.formatters import strip_all_whitespace
from notifications_utils.insensitive_dict import InsensitiveDict from notifications_utils.insensitive_dict import InsensitiveDict
from notifications_utils.recipients import ( from notifications_utils.recipients import InvalidPhoneError, validate_phone_number
InvalidPhoneError,
validate_phone_number,
)
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
from wtforms import ( from wtforms import (
BooleanField, BooleanField,
+1 -4
View File
@@ -3,10 +3,7 @@ from abc import ABC, abstractmethod
from notifications_utils.field import Field from notifications_utils.field import Field
from notifications_utils.formatters import formatted_list from notifications_utils.formatters import formatted_list
from notifications_utils.recipients import ( from notifications_utils.recipients import InvalidEmailError, validate_email_address
InvalidEmailError,
validate_email_address,
)
from notifications_utils.sanitise_text import SanitiseSMS from notifications_utils.sanitise_text import SanitiseSMS
from wtforms import ValidationError from wtforms import ValidationError
+1 -9
View File
@@ -1,12 +1,4 @@
from flask import ( from flask import Markup, abort, flash, redirect, render_template, request, url_for
Markup,
abort,
flash,
redirect,
render_template,
request,
url_for,
)
from flask_login import current_user from flask_login import current_user
from app import ( from app import (
+1 -9
View File
@@ -3,15 +3,7 @@ from datetime import datetime
from functools import partial from functools import partial
from itertools import groupby from itertools import groupby
from flask import ( from flask import Response, abort, jsonify, render_template, request, session, url_for
Response,
abort,
jsonify,
render_template,
request,
session,
url_for,
)
from flask_login import current_user from flask_login import current_user
from notifications_utils.recipients import format_phone_number_human_readable from notifications_utils.recipients import format_phone_number_human_readable
from werkzeug.utils import redirect from werkzeug.utils import redirect
+2 -9
View File
@@ -4,19 +4,12 @@ import pytz
from flask import redirect, render_template, request, session, url_for from flask import redirect, render_template, request, session, url_for
from flask_login import current_user from flask_login import current_user
from govuk_bank_holidays.bank_holidays import BankHolidays from govuk_bank_holidays.bank_holidays import BankHolidays
from notifications_utils.clients.zendesk.zendesk_client import ( from notifications_utils.clients.zendesk.zendesk_client import NotifySupportTicket
NotifySupportTicket,
)
from app import convert_to_boolean, current_service from app import convert_to_boolean, current_service
from app.extensions import zendesk_client from app.extensions import zendesk_client
from app.main import main from app.main import main
from app.main.forms import ( from app.main.forms import FeedbackOrProblem, SupportRedirect, SupportType, Triage
FeedbackOrProblem,
SupportRedirect,
SupportType,
Triage,
)
from app.models.feedback import ( from app.models.feedback import (
GENERAL_TICKET_TYPE, GENERAL_TICKET_TYPE,
PROBLEM_TICKET_TYPE, PROBLEM_TICKET_TYPE,
+1 -4
View File
@@ -14,10 +14,7 @@ from app import email_branding_client, status_api_client
from app.main import main from app.main import main
from app.main.forms import FieldWithNoneOption from app.main.forms import FieldWithNoneOption
from app.main.views.pricing import CURRENT_SMS_RATE from app.main.views.pricing import CURRENT_SMS_RATE
from app.main.views.sub_navigation_dictionaries import ( from app.main.views.sub_navigation_dictionaries import features_nav, using_notify_nav
features_nav,
using_notify_nav,
)
from app.utils.user import user_is_logged_in from app.utils.user import user_is_logged_in
+1 -7
View File
@@ -5,13 +5,7 @@ from markupsafe import Markup
from app.main import main from app.main import main
from app.models.organization import Organization from app.models.organization import Organization
from app.models.service import Service from app.models.service import Service
from app.models.user import ( from app.models.user import InvitedOrgUser, InvitedUser, OrganizationUsers, User, Users
InvitedOrgUser,
InvitedUser,
OrganizationUsers,
User,
Users,
)
@main.route("/invitation/<token>") @main.route("/invitation/<token>")
+1 -4
View File
@@ -14,10 +14,7 @@ from flask import (
url_for, url_for,
) )
from flask_login import current_user from flask_login import current_user
from notifications_utils.template import ( from notifications_utils.template import EmailPreviewTemplate, SMSBodyPreviewTemplate
EmailPreviewTemplate,
SMSBodyPreviewTemplate,
)
from app import ( from app import (
current_service, current_service,
+1 -9
View File
@@ -1,12 +1,4 @@
from flask import ( from flask import abort, flash, redirect, render_template, request, session, url_for
abort,
flash,
redirect,
render_template,
request,
session,
url_for,
)
from flask_login import current_user from flask_login import current_user
from notifications_python_client.errors import HTTPError from notifications_python_client.errors import HTTPError
+1 -3
View File
@@ -1,8 +1,6 @@
from flask import current_app, render_template from flask import current_app, render_template
from flask_login import current_user from flask_login import current_user
from notifications_utils.international_billing_rates import ( from notifications_utils.international_billing_rates import INTERNATIONAL_BILLING_RATES
INTERNATIONAL_BILLING_RATES,
)
from app.main import main from app.main import main
from app.main.forms import SearchByNameForm from app.main.forms import SearchByNameForm
+1 -5
View File
@@ -42,11 +42,7 @@ from app.s3_client.s3_csv_client import (
s3upload, s3upload,
set_metadata_on_csv_upload, set_metadata_on_csv_upload,
) )
from app.utils import ( from app.utils import PermanentRedirect, should_skip_template_page, unicode_truncate
PermanentRedirect,
should_skip_template_page,
unicode_truncate,
)
from app.utils.csv import Spreadsheet, get_errors_for_csv from app.utils.csv import Spreadsheet, get_errors_for_csv
from app.utils.templates import get_template from app.utils.templates import get_template
from app.utils.user import user_has_permissions from app.utils.user import user_has_permissions
+1 -3
View File
@@ -13,9 +13,7 @@ from flask import (
) )
from flask_login import current_user from flask_login import current_user
from notifications_python_client.errors import HTTPError from notifications_python_client.errors import HTTPError
from notifications_utils.clients.zendesk.zendesk_client import ( from notifications_utils.clients.zendesk.zendesk_client import NotifySupportTicket
NotifySupportTicket,
)
from app import ( from app import (
billing_api_client, billing_api_client,
+1 -9
View File
@@ -1,14 +1,6 @@
from functools import partial from functools import partial
from flask import ( from flask import abort, flash, jsonify, redirect, render_template, request, url_for
abort,
flash,
jsonify,
redirect,
render_template,
request,
url_for,
)
from flask_login import current_user from flask_login import current_user
from notifications_python_client.errors import HTTPError from notifications_python_client.errors import HTTPError
from notifications_utils import SMS_CHAR_COUNT_LIMIT from notifications_utils import SMS_CHAR_COUNT_LIMIT
+1 -8
View File
@@ -1,13 +1,6 @@
import json import json
from flask import ( from flask import current_app, redirect, render_template, request, session, url_for
current_app,
redirect,
render_template,
request,
session,
url_for,
)
from flask_login import current_user from flask_login import current_user
from itsdangerous import SignatureExpired from itsdangerous import SignatureExpired
from notifications_utils.url_safe_token import check_token from notifications_utils.url_safe_token import check_token
+1 -9
View File
@@ -1,14 +1,6 @@
import json import json
from flask import ( from flask import abort, current_app, flash, redirect, render_template, session, url_for
abort,
current_app,
flash,
redirect,
render_template,
session,
url_for,
)
from itsdangerous import SignatureExpired from itsdangerous import SignatureExpired
from notifications_utils.url_safe_token import check_token from notifications_utils.url_safe_token import check_token
+1 -6
View File
@@ -2,12 +2,7 @@ from collections import OrderedDict
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
from app.models import ( from app.models import JSONModel, ModelList, SerialisedModelCollection, SortByNameMixin
JSONModel,
ModelList,
SerialisedModelCollection,
SortByNameMixin,
)
from app.notify_client.email_branding_client import email_branding_client from app.notify_client.email_branding_client import email_branding_client
from app.notify_client.organizations_api_client import organizations_client from app.notify_client.organizations_api_client import organizations_client
+2 -9
View File
@@ -3,12 +3,7 @@ from notifications_utils.serialised_model import SerialisedModelCollection
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
from app.models import JSONModel, SortByNameMixin from app.models import JSONModel, SortByNameMixin
from app.models.job import ( from app.models.job import ImmediateJobs, PaginatedJobs, PaginatedUploads, ScheduledJobs
ImmediateJobs,
PaginatedJobs,
PaginatedUploads,
ScheduledJobs,
)
from app.models.organization import Organization from app.models.organization import Organization
from app.models.user import InvitedUsers, User, Users from app.models.user import InvitedUsers, User, Users
from app.notify_client.api_key_api_client import api_key_api_client from app.notify_client.api_key_api_client import api_key_api_client
@@ -19,9 +14,7 @@ from app.notify_client.invite_api_client import invite_api_client
from app.notify_client.job_api_client import job_api_client from app.notify_client.job_api_client import job_api_client
from app.notify_client.organizations_api_client import organizations_client from app.notify_client.organizations_api_client import organizations_client
from app.notify_client.service_api_client import service_api_client from app.notify_client.service_api_client import service_api_client
from app.notify_client.template_folder_api_client import ( from app.notify_client.template_folder_api_client import template_folder_api_client
template_folder_api_client,
)
from app.utils import get_default_sms_sender from app.utils import get_default_sms_sender
+1 -4
View File
@@ -1,7 +1,4 @@
from notifications_utils.template import ( from notifications_utils.template import EmailPreviewTemplate, SMSPreviewTemplate
EmailPreviewTemplate,
SMSPreviewTemplate,
)
def get_sample_template(template_type): def get_sample_template(template_type):
+9 -8
View File
@@ -2,11 +2,12 @@
norecursedirs=node_modules bower_components norecursedirs=node_modules bower_components
xfail_strict=true xfail_strict=true
[isort] [tool:isort]
line_length=80 profile = black
indent=' ' multi_line_output = 3
multi_line_output=3
known_third_party=notifications_utils,notifications_python_client
known_first_party=app,tests [tool:flake8]
include_trailing_comma=True exclude = venv*,__pycache__,node_modules,cache,build
use_parentheses=True max-line-length = 120
extend_ignore=B306, W504, E203
@@ -2,9 +2,7 @@ from unittest.mock import ANY, PropertyMock
import pytest import pytest
from flask import url_for from flask import url_for
from notifications_utils.clients.zendesk.zendesk_client import ( from notifications_utils.clients.zendesk.zendesk_client import NotifySupportTicket
NotifySupportTicket,
)
from tests import sample_uuid from tests import sample_uuid
from tests.conftest import ORGANISATION_ID, SERVICE_ONE_ID, normalize_spaces from tests.conftest import ORGANISATION_ID, SERVICE_ONE_ID, normalize_spaces
@@ -8,9 +8,7 @@ import pytest
from flask import url_for from flask import url_for
from freezegun import freeze_time from freezegun import freeze_time
from notifications_python_client.errors import HTTPError from notifications_python_client.errors import HTTPError
from notifications_utils.clients.zendesk.zendesk_client import ( from notifications_utils.clients.zendesk.zendesk_client import NotifySupportTicket
NotifySupportTicket,
)
import app import app
from tests import ( from tests import (
+1 -3
View File
@@ -4,9 +4,7 @@ from unittest.mock import ANY, PropertyMock
import pytest import pytest
from flask import url_for from flask import url_for
from freezegun import freeze_time from freezegun import freeze_time
from notifications_utils.clients.zendesk.zendesk_client import ( from notifications_utils.clients.zendesk.zendesk_client import NotifySupportTicket
NotifySupportTicket,
)
from app.main.views.feedback import in_business_hours from app.main.views.feedback import in_business_hours
from app.models.feedback import ( from app.models.feedback import (
+2 -10
View File
@@ -15,17 +15,9 @@ from notifications_python_client.errors import HTTPError
from notifications_utils.recipients import RecipientCSV from notifications_utils.recipients import RecipientCSV
from notifications_utils.template import SMSPreviewTemplate from notifications_utils.template import SMSPreviewTemplate
from xlrd.biffh import XLRDError from xlrd.biffh import XLRDError
from xlrd.xldate import ( from xlrd.xldate import XLDateAmbiguous, XLDateError, XLDateNegative, XLDateTooLarge
XLDateAmbiguous,
XLDateError,
XLDateNegative,
XLDateTooLarge,
)
from tests import ( from tests import validate_route_permission, validate_route_permission_with_client
validate_route_permission,
validate_route_permission_with_client,
)
from tests.conftest import ( from tests.conftest import (
SERVICE_ONE_ID, SERVICE_ONE_ID,
create_active_caseworking_user, create_active_caseworking_user,
@@ -1,8 +1,6 @@
import uuid import uuid
from app.notify_client.template_statistics_api_client import ( from app.notify_client.template_statistics_api_client import TemplateStatisticsApiClient
TemplateStatisticsApiClient,
)
def test_template_statistics_client_calls_correct_api_endpoint_for_service(mocker, api_user_active): def test_template_statistics_client_calls_correct_api_endpoint_for_service(mocker, api_user_active):
+1
View File
@@ -9,6 +9,7 @@ from app.navigation import (
Navigation, Navigation,
OrgNavigation, OrgNavigation,
) )
# from tests.conftest import ORGANISATION_ID, SERVICE_ONE_ID, normalize_spaces # from tests.conftest import ORGANISATION_ID, SERVICE_ONE_ID, normalize_spaces
from tests.conftest import SERVICE_ONE_ID, normalize_spaces from tests.conftest import SERVICE_ONE_ID, normalize_spaces
+1 -5
View File
@@ -1,11 +1,7 @@
import pytest import pytest
from app.models.job import Job from app.models.job import Job
from app.statistics_utils import ( from app.statistics_utils import add_rates_to, statistics_by_state, sum_of_statistics
add_rates_to,
statistics_by_state,
sum_of_statistics,
)
@pytest.mark.parametrize('delivery_statistics', [ @pytest.mark.parametrize('delivery_statistics', [