mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-10 18:22:37 -04:00
merge from main
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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,
|
||||||
|
|||||||
@@ -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,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 (
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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>")
|
||||||
|
|||||||
@@ -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,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,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,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,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,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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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,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):
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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,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', [
|
||||||
|
|||||||
Reference in New Issue
Block a user