mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 18:37:33 -04:00
merge from main
This commit is contained in:
+7
-1
@@ -150,8 +150,14 @@ def _csp(config):
|
|||||||
"https://js-agent.newrelic.com",
|
"https://js-agent.newrelic.com",
|
||||||
"https://gov-bam.nr-data.net",
|
"https://gov-bam.nr-data.net",
|
||||||
"https://www.googletagmanager.com",
|
"https://www.googletagmanager.com",
|
||||||
|
"https://www.google-analytics.com",
|
||||||
|
"https://dap.digitalgov.gov",
|
||||||
|
],
|
||||||
|
"connect-src": [
|
||||||
|
"'self'",
|
||||||
|
"https://gov-bam.nr-data.net",
|
||||||
|
"https://www.google-analytics.com",
|
||||||
],
|
],
|
||||||
"connect-src": ["'self'", "https://gov-bam.nr-data.net"],
|
|
||||||
"style-src": ["'self'", asset_domain],
|
"style-src": ["'self'", asset_domain],
|
||||||
"img-src": ["'self'", asset_domain, logo_domain],
|
"img-src": ["'self'", asset_domain, logo_domain],
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1196,7 +1196,7 @@ class AdminServiceSMSAllowanceForm(StripWhitespaceForm):
|
|||||||
|
|
||||||
class AdminServiceMessageLimitForm(StripWhitespaceForm):
|
class AdminServiceMessageLimitForm(StripWhitespaceForm):
|
||||||
message_limit = GovukIntegerField(
|
message_limit = GovukIntegerField(
|
||||||
"Number of messages the service is allowed to send each day",
|
"Max number of messages the service has per send",
|
||||||
validators=[DataRequired(message="Cannot be empty")],
|
validators=[DataRequired(message="Cannot be empty")],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from app.main.forms import (
|
|||||||
SearchUsersForm,
|
SearchUsersForm,
|
||||||
)
|
)
|
||||||
from app.models.user import InvitedUser, User
|
from app.models.user import InvitedUser, User
|
||||||
from app.utils.user import is_gov_user, user_has_permissions, user_is_platform_admin
|
from app.utils.user import is_gov_user, user_has_permissions
|
||||||
from app.utils.user_permissions import permission_options
|
from app.utils.user_permissions import permission_options
|
||||||
|
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ def manage_users(service_id):
|
|||||||
@main.route(
|
@main.route(
|
||||||
"/services/<uuid:service_id>/users/invite/<uuid:user_id>", methods=["GET", "POST"]
|
"/services/<uuid:service_id>/users/invite/<uuid:user_id>", methods=["GET", "POST"]
|
||||||
)
|
)
|
||||||
@user_is_platform_admin
|
@user_has_permissions("manage_service")
|
||||||
def invite_user(service_id, user_id=None):
|
def invite_user(service_id, user_id=None):
|
||||||
form_class = InviteUserForm
|
form_class = InviteUserForm
|
||||||
form = form_class(
|
form = form_class(
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
'table-field-right-aligned' if align == 'right' else
|
'table-field-right-aligned' if align == 'right' else
|
||||||
'table-field-center-aligned' if align == 'center' else
|
'table-field-center-aligned' if align == 'center' else
|
||||||
'table-field-left-aligned'
|
'table-field-left-aligned'
|
||||||
%}
|
%}
|
||||||
{% set border = '' if border else 'table-field-noborder' %}
|
{% set border = '' if border else 'table-field-noborder' %}
|
||||||
{% set wrap = 'table-field-wrap-text' if wrap else '' %}
|
{% set wrap = 'table-field-wrap-text' if wrap else '' %}
|
||||||
|
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
{% if notification.status|format_notification_status_as_url(notification.notification_type) %}
|
{% if notification.status|format_notification_status_as_url(notification.notification_type) %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p class="status-hint margin-0 width-card-lg">
|
<p class="status-hint margin-0 width-card ">
|
||||||
{{ notification.status|format_notification_status_as_time(
|
{{ notification.status|format_notification_status_as_time(
|
||||||
notification.created_at|format_datetime_short,
|
notification.created_at|format_datetime_short,
|
||||||
(notification.updated_at or notification.created_at)|format_datetime_short
|
(notification.updated_at or notification.created_at)|format_datetime_short
|
||||||
@@ -180,6 +180,42 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro notification_carrier_field(notification) %}
|
||||||
|
|
||||||
|
<!-- {% set displayed_on_single_line = notification.status in ['created', 'pending', 'sending', 'delivered', 'accepted', 'received'] %} -->
|
||||||
|
|
||||||
|
{% if not notification %}
|
||||||
|
{% call field(align='right') %}{% endcall %}
|
||||||
|
{% else %}
|
||||||
|
<!-- {% set status = notification.status|format_notification_status_as_field_status(notification.notification_type) %} -->
|
||||||
|
{% call field(
|
||||||
|
align='right'
|
||||||
|
) %}
|
||||||
|
<p class="status-hint margin-0 width-card">
|
||||||
|
{{ notification.carrier}}
|
||||||
|
</p>
|
||||||
|
{% if displayed_on_single_line %}</span>{% endif %}
|
||||||
|
{% endcall %}
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro notification_carrier_message_field(notification) %}
|
||||||
|
|
||||||
|
{% if not notification %}
|
||||||
|
{% call field(align='right') %}{% endcall %}
|
||||||
|
{% else %}
|
||||||
|
<!-- {% set status = notification.status|format_notification_status_as_field_status(notification.notification_type) %} -->
|
||||||
|
{% call field(
|
||||||
|
status=status,
|
||||||
|
align='right'
|
||||||
|
) %}
|
||||||
|
<p class="status-hint margin-0 width-card">
|
||||||
|
{{notification.provider_response}}
|
||||||
|
</p>
|
||||||
|
{% if displayed_on_single_line %}</span>{% endif %}
|
||||||
|
{% endcall %}
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro spark_bar_field(
|
{% macro spark_bar_field(
|
||||||
count,
|
count,
|
||||||
@@ -189,7 +225,7 @@
|
|||||||
{% call field(align='right') %}
|
{% call field(align='right') %}
|
||||||
<span {% if id %}id="{{ id }}"{% endif %} class="spark-bar">
|
<span {% if id %}id="{{ id }}"{% endif %} class="spark-bar">
|
||||||
<span class="spark-bar-bar">
|
<span class="spark-bar-bar">
|
||||||
{{ '{:,.0f}'.format(count) }}
|
{{ '{:,.0f}'.format(count) }}
|
||||||
<!-- {% if count == 1 -%}
|
<!-- {% if count == 1 -%}
|
||||||
message sent
|
message sent
|
||||||
{% else -%}
|
{% else -%}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{% from "components/page-footer.html" import page_footer %}
|
{% from "components/page-footer.html" import page_footer %}
|
||||||
{% from "components/previous-next-navigation.html" import previous_next_navigation %}
|
{% from "components/previous-next-navigation.html" import previous_next_navigation %}
|
||||||
{% from "components/table.html" import list_table, field, text_field, link_field, right_aligned_field_heading, hidden_field_heading, row_heading, notification_status_field %}
|
{% from "components/table.html" import list_table, field, text_field, link_field, right_aligned_field_heading, hidden_field_heading, row_heading, notification_status_field, notification_carrier_field, notification_carrier_message_field %}
|
||||||
|
|
||||||
<div class="ajax-block-container" id='pill-selected-item'>
|
<div class="ajax-block-container" id='pill-selected-item'>
|
||||||
|
|
||||||
@@ -12,17 +12,19 @@
|
|||||||
caption="Recent activity",
|
caption="Recent activity",
|
||||||
caption_visible=False,
|
caption_visible=False,
|
||||||
empty_message='No messages found  (messages are kept for {} days)'.format(limit_days)|safe,
|
empty_message='No messages found  (messages are kept for {} days)'.format(limit_days)|safe,
|
||||||
field_headings=['Recipient', 'Status'],
|
field_headings=['Recipient', 'Status', 'Carrier', 'Carrier Response'],
|
||||||
field_headings_visible=False
|
field_headings_visible=False
|
||||||
) %}
|
) %}
|
||||||
{% call row_heading() %}
|
{% call row_heading() %}
|
||||||
<a class="usa-link file-list-filename" href="{{ single_notification_url(notification_id=item.id) }}">{{ item.to.splitlines()|join(', ') if item.to else '' }}</a>
|
<a class="usa-link file-list-filename" href="{{ single_notification_url(notification_id=item.id) }}">{{ item.to.splitlines()|join(', ') if item.to else '' }}</a>
|
||||||
<p class="file-list-hint">
|
<p class="file-list-hint width-card">
|
||||||
{{ item.preview_of_content }}
|
{{ item.preview_of_content }}
|
||||||
</p>
|
</p>
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|
||||||
{{ notification_status_field(item) }}
|
{{ notification_status_field(item) }}
|
||||||
|
{{ notification_carrier_field(item) }}
|
||||||
|
{{ notification_carrier_message_field(item)}}
|
||||||
|
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% if notifications %}
|
{% if notifications %}
|
||||||
|
|||||||
@@ -9,9 +9,19 @@
|
|||||||
|
|
||||||
{% block maincolumn_content %}
|
{% block maincolumn_content %}
|
||||||
|
|
||||||
<h1 class="font-body-lg">
|
<div class="display-flex flex-justify flex-align-center">
|
||||||
Team members
|
<h1 class="font-body-xl margin-0">
|
||||||
</h1>
|
Team members
|
||||||
|
</h1>
|
||||||
|
{% if current_user.has_permissions('manage_service') %}
|
||||||
|
{{ usaButton({
|
||||||
|
"element": "a",
|
||||||
|
"text": "Invite a team member",
|
||||||
|
"href": url_for('.invite_user', service_id=current_service.id),
|
||||||
|
"classes": "usa-button--outline"
|
||||||
|
}) }}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if show_search_box %}
|
{% if show_search_box %}
|
||||||
<div data-module="autofocus">
|
<div data-module="autofocus">
|
||||||
@@ -84,15 +94,4 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if current_user.has_permissions('manage_service') %}
|
|
||||||
<div class="js-stick-at-bottom-when-scrolling">
|
|
||||||
{{ usaButton({
|
|
||||||
"element": "a",
|
|
||||||
"text": "Invite a team member",
|
|
||||||
"href": url_for('.invite_user', service_id=current_service.id),
|
|
||||||
"classes": "usa-button"
|
|
||||||
}) }}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -294,9 +294,9 @@
|
|||||||
{{ edit_field('Change', url_for('.set_rate_limit', service_id=current_service.id), suffix='rate limit') }}
|
{{ edit_field('Change', url_for('.set_rate_limit', service_id=current_service.id), suffix='rate limit') }}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% call row() %}
|
{% call row() %}
|
||||||
{{ text_field('Message limit')}}
|
{{ text_field('Message batch limit')}}
|
||||||
{{ text_field('{:,} per day'.format(current_service.message_limit)) }}
|
{{ text_field('{:,} per send'.format(current_service.message_limit)) }}
|
||||||
{{ edit_field('Change', url_for('.set_message_limit', service_id=current_service.id), suffix='daily message limit') }}
|
{{ edit_field('Change', url_for('.set_message_limit', service_id=current_service.id), suffix='message batch limit') }}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% call row() %}
|
{% call row() %}
|
||||||
{{ text_field('Free text message allowance')}}
|
{{ text_field('Free text message allowance')}}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
{% from "components/components/back-link/macro.njk" import usaBackLink %}
|
||||||
|
|
||||||
{% block service_page_title %}
|
{% block service_page_title %}
|
||||||
Daily message limit
|
Message batch limit
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block backLink %}
|
{% block backLink %}
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
{% block maincolumn_content %}
|
{% block maincolumn_content %}
|
||||||
|
|
||||||
{% call form_wrapper() %}
|
{% call form_wrapper() %}
|
||||||
{{ page_header('Daily message limit') }}
|
{{ page_header('Message batch limit') }}
|
||||||
{{ form.message_limit }}
|
{{ form.message_limit }}
|
||||||
{{ page_footer('Save') }}
|
{{ page_footer('Save') }}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|||||||
@@ -16,9 +16,8 @@ Notify.gov
|
|||||||
<div class="grid-container padding-y-4">
|
<div class="grid-container padding-y-4">
|
||||||
<div class="grid-row grid-gap display-flex flex-align-center">
|
<div class="grid-row grid-gap display-flex flex-align-center">
|
||||||
<div class="desktop:grid-col-7 tablet:grid-col-12">
|
<div class="desktop:grid-col-7 tablet:grid-col-12">
|
||||||
<h1 class="font-serif-2xl usa-hero__heading">Send text messages to your participants</h1>
|
<h1 class="font-serif-2xl usa-hero__heading">Reach people where they are with government-powered text messages</h1>
|
||||||
<p class="font-sans-lg">Notify.gov is a text messaging service that helps federal, state, local, tribal, and territorial governments more
|
<p class="font-sans-lg">Notify.gov is a text message service that helps federal, state, local, tribal and territorial governments more effectively communicate with the people they serve.</p>
|
||||||
effectively communicate with their program participants.</p>
|
|
||||||
<div class="usa-button-group margin-bottom-5">
|
<div class="usa-button-group margin-bottom-5">
|
||||||
<a class="usa-button usa-button--big margin-right-2" href="{{ url_for('main.sign_in' )}}">Sign in</a>
|
<a class="usa-button usa-button--big margin-right-2" href="{{ url_for('main.sign_in' )}}">Sign in</a>
|
||||||
if you are an existing pilot partner
|
if you are an existing pilot partner
|
||||||
@@ -304,4 +303,4 @@ Notify.gov
|
|||||||
</div>-->
|
</div>-->
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -38,18 +38,12 @@
|
|||||||
{% for item in template_list %}
|
{% for item in template_list %}
|
||||||
|
|
||||||
{% set item_link_content %}
|
{% set item_link_content %}
|
||||||
{% for ancestor in item.ancestors %}
|
|
||||||
<a href="{{ url_for('.choose_template', service_id=current_service.id, template_type=template_type, template_folder_id=ancestor.id) }}"
|
|
||||||
class="usa-link template-list-folder">
|
|
||||||
{{- format_item_name(ancestor.name) -}}
|
|
||||||
</a> <span class="message-name-separator"></span>
|
|
||||||
{% endfor %}
|
|
||||||
{% if item.is_folder %}
|
{% if item.is_folder %}
|
||||||
<a href="{{ url_for('.choose_template', service_id=current_service.id, template_type=template_type, template_folder_id=item.id) }}"
|
<a href="{{ url_for('.choose_template', service_id=current_service.id, template_type=template_type, template_folder_id=item.id) }}"
|
||||||
class="usa-link template-list-folder">
|
class="usa-link template-list-folder">
|
||||||
<span class="live-search-relevant">{{- format_item_name(item.name) -}}</span>
|
<span class="live-search-relevant">{{- format_item_name(item.name) -}}</span>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% elif not item.ancestors %}
|
||||||
<a href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.id) }}"
|
<a href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.id) }}"
|
||||||
class="usa-link template-list-template">
|
class="usa-link template-list-template">
|
||||||
<span class="live-search-relevant">
|
<span class="live-search-relevant">
|
||||||
@@ -70,9 +64,11 @@
|
|||||||
{% endset %}
|
{% endset %}
|
||||||
|
|
||||||
{% set item_meta %}
|
{% set item_meta %}
|
||||||
|
{% if not item.ancestors %}
|
||||||
<span id="{{ item.id }}-item-hint" class="usa-hint usa-checkbox__label-description template-list-item-hint">
|
<span id="{{ item.id }}-item-hint" class="usa-hint usa-checkbox__label-description template-list-item-hint">
|
||||||
{{ item.hint }}
|
{{ item.hint }}
|
||||||
</span>
|
</span>
|
||||||
|
{% endif %}
|
||||||
{% endset %}
|
{% endset %}
|
||||||
|
|
||||||
{# create the item config now to include the label content -#}
|
{# create the item config now to include the label content -#}
|
||||||
@@ -112,4 +108,4 @@
|
|||||||
}) }}
|
}) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</nav>
|
</nav>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
Generated
+43
-219
@@ -25,7 +25,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.19.6",
|
"@babel/core": "7.19.6",
|
||||||
"@babel/preset-env": "7.19.4",
|
"@babel/preset-env": "7.19.4",
|
||||||
"@uswds/compile": "^1.0.0",
|
"@uswds/compile": "^1.1.0",
|
||||||
"better-npm-audit": "^3.7.3",
|
"better-npm-audit": "^3.7.3",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-add-src": "1.0.0",
|
"gulp-add-src": "1.0.0",
|
||||||
@@ -2720,9 +2720,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/vinyl": {
|
"node_modules/@types/vinyl": {
|
||||||
"version": "2.0.9",
|
"version": "2.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.11.tgz",
|
||||||
"integrity": "sha512-KCr4aTEUkzSF89qw09e2oxsC/RXXT3K5ZPv4gvj3XTiWVrxNoi7WrqNTahNE/Hul5C9z3B8w+yWNTQgua12oag==",
|
"integrity": "sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/expect": "^1.20.4",
|
"@types/expect": "^1.20.4",
|
||||||
@@ -2745,201 +2745,23 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@uswds/compile": {
|
"node_modules/@uswds/compile": {
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@uswds/compile/-/compile-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@uswds/compile/-/compile-1.1.0.tgz",
|
||||||
"integrity": "sha512-dIAL2cr6K+QnSNr/fe7Y2Db06rkxMla5VtockxHF+CYcBl3DbJ8qbMn/kxouYDX5rgN0So2PbMAouzpM7uhyMA==",
|
"integrity": "sha512-kKlszBhO13v/qa1jaNqaOWiAJjuKtASHCxjmu+OXw/wMGVdaJcNjkM8hWL9/sx4AUe07PBwlJoGPtkKRWqSxWw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.16",
|
||||||
"del": "6.0.0",
|
"del": "6.1.1",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-postcss": "9.0.1",
|
"gulp-postcss": "9.0.1",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
"gulp-replace": "1.1.3",
|
"gulp-replace": "1.1.4",
|
||||||
"gulp-sass": "5.1.0",
|
"gulp-sass": "5.1.0",
|
||||||
"gulp-sourcemaps": "3.0.0",
|
"gulp-sourcemaps": "3.0.0",
|
||||||
"gulp-svgstore": "9.0.0",
|
"gulp-svgstore": "9.0.0",
|
||||||
"postcss": "8.4.19",
|
"postcss": "8.4.31",
|
||||||
"postcss-csso": "6.0.1",
|
"postcss-csso": "6.0.1",
|
||||||
"sass-embedded": "1.56.1"
|
"sass-embedded": "1.69.5"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/has-flag": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-8VuohdRoGfqVWgBNeC+iqek1KXIVWYcG6AOQ6rJvRUe08HbdPQgp0+fseDQX7E5UxaoM8wvU5VBwCbZvPwFZQw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"buffer-builder": "^0.2.0",
|
|
||||||
"google-protobuf": "^3.11.4",
|
|
||||||
"immutable": "^4.0.0",
|
|
||||||
"rxjs": "^7.4.0",
|
|
||||||
"supports-color": "^8.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"sass-embedded-darwin-arm64": "1.56.1",
|
|
||||||
"sass-embedded-darwin-x64": "1.56.1",
|
|
||||||
"sass-embedded-linux-arm": "1.56.1",
|
|
||||||
"sass-embedded-linux-arm64": "1.56.1",
|
|
||||||
"sass-embedded-linux-ia32": "1.56.1",
|
|
||||||
"sass-embedded-linux-x64": "1.56.1",
|
|
||||||
"sass-embedded-win32-ia32": "1.56.1",
|
|
||||||
"sass-embedded-win32-x64": "1.56.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-darwin-arm64": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-Y6us8rg7uwLtAzGiKDebAhFn98RLpW3u5Jnfbsvetlm/rDJ1fZg/roVXFttepLdVbYBjimVFTUaNuGxU3bWbBA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-darwin-x64": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-UypB3IREbreNNc+dG+L6hG5yoeTujKDCdmu38SSSS/zl9XBFTc8McX58SWapTJOUFK8G43CCimfB3r8FOcyNfA==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-linux-arm": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-pXv+2HlMsjlk0g3dzuVhofuUNJZWUfWVe5xbbWHv+wrdH9kuui6WOyHDhSdUolPrRXOrdsG6Z4/Balr9wa1JWQ==",
|
|
||||||
"cpu": [
|
|
||||||
"arm"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-linux-arm64": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-Ly2wk8EmhjXkBpNPM+yAygSxTVIBjQlf4cDAHYgsaDUIIvRSAKAe2CUmxJjik069Qmv54g+Ac7WF6k63c2CTNw==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-linux-ia32": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-cGmhnHdCbwJsQgsogwmlALzS/j8g+qQTiBuKBcXIWyFn4hLWo2BAr4Gm9vY5p+8aapcYrRQF9b0nwpFQcUScOg==",
|
|
||||||
"cpu": [
|
|
||||||
"ia32"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-linux-x64": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-yMXS37lP3abTI5ThuydOrLacSNz4Oo9+xlfQDR0pntrugdKzH7vHWK7T7Ynd+vGjVqFajUhI+VihP7vZlhhndw==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-win32-ia32": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-cjtuKc1O0F+yQZ8hLLYhalulEkBZ6HPdR/ys0l6hn7KTlrYooMyvZXbdU5KaB2lfK1WD29I0HefT8Em7d9cpfA==",
|
|
||||||
"cpu": [
|
|
||||||
"ia32"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/sass-embedded-win32-x64": {
|
|
||||||
"version": "1.56.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.56.1.tgz",
|
|
||||||
"integrity": "sha512-VxqwSluQdNBdBEx0p6N2dOrGPIEL3AcG62KuDJ4KD/rHPQgoCPiJvLa5MXKdVHC24tHgE2AYlirILS/iE/N1NQ==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@uswds/compile/node_modules/supports-color": {
|
|
||||||
"version": "8.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
|
|
||||||
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"has-flag": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/chalk/supports-color?sponsor=1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@uswds/uswds": {
|
"node_modules/@uswds/uswds": {
|
||||||
@@ -3527,9 +3349,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/autoprefixer": {
|
"node_modules/autoprefixer": {
|
||||||
"version": "10.4.13",
|
"version": "10.4.16",
|
||||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
|
||||||
"integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
|
"integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3539,12 +3361,16 @@
|
|||||||
{
|
{
|
||||||
"type": "tidelift",
|
"type": "tidelift",
|
||||||
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
|
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.21.4",
|
"browserslist": "^4.21.10",
|
||||||
"caniuse-lite": "^1.0.30001426",
|
"caniuse-lite": "^1.0.30001538",
|
||||||
"fraction.js": "^4.2.0",
|
"fraction.js": "^4.3.6",
|
||||||
"normalize-range": "^0.1.2",
|
"normalize-range": "^0.1.2",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"postcss-value-parser": "^4.2.0"
|
"postcss-value-parser": "^4.2.0"
|
||||||
@@ -4946,9 +4772,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/del": {
|
"node_modules/del": {
|
||||||
"version": "6.0.0",
|
"version": "6.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
|
||||||
"integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==",
|
"integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"globby": "^11.0.1",
|
"globby": "^11.0.1",
|
||||||
@@ -5558,9 +5384,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/fast-glob": {
|
"node_modules/fast-glob": {
|
||||||
"version": "3.3.1",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
|
||||||
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "^2.0.2",
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
@@ -6164,12 +5990,6 @@
|
|||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/google-protobuf": {
|
|
||||||
"version": "3.21.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz",
|
|
||||||
"integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/gopd": {
|
"node_modules/gopd": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||||
@@ -6845,12 +6665,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/gulp-replace": {
|
"node_modules/gulp-replace": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz",
|
||||||
"integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==",
|
"integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^14.14.41",
|
"@types/node": "*",
|
||||||
"@types/vinyl": "^2.0.4",
|
"@types/vinyl": "^2.0.4",
|
||||||
"istextorbinary": "^3.0.0",
|
"istextorbinary": "^3.0.0",
|
||||||
"replacestream": "^4.0.3",
|
"replacestream": "^4.0.3",
|
||||||
@@ -7432,9 +7252,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ignore": {
|
"node_modules/ignore": {
|
||||||
"version": "5.2.4",
|
"version": "5.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
|
||||||
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
|
"integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
@@ -11752,9 +11572,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.19",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||||
"integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
|
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -11764,10 +11584,14 @@
|
|||||||
{
|
{
|
||||||
"type": "tidelift",
|
"type": "tidelift",
|
||||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.4",
|
"nanoid": "^3.3.6",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^1.0.2"
|
"source-map-js": "^1.0.2"
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.19.6",
|
"@babel/core": "7.19.6",
|
||||||
"@babel/preset-env": "7.19.4",
|
"@babel/preset-env": "7.19.4",
|
||||||
"@uswds/compile": "^1.0.0",
|
"@uswds/compile": "^1.1.0",
|
||||||
"better-npm-audit": "^3.7.3",
|
"better-npm-audit": "^3.7.3",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-add-src": "1.0.0",
|
"gulp-add-src": "1.0.0",
|
||||||
|
|||||||
Generated
+40
-39
@@ -41,18 +41,18 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bandit"
|
name = "bandit"
|
||||||
version = "1.7.5"
|
version = "1.7.6"
|
||||||
description = "Security oriented static analyser for python code."
|
description = "Security oriented static analyser for python code."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"},
|
{file = "bandit-1.7.6-py3-none-any.whl", hash = "sha256:36da17c67fc87579a5d20c323c8d0b1643a890a2b93f00b3d1229966624694ff"},
|
||||||
{file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"},
|
{file = "bandit-1.7.6.tar.gz", hash = "sha256:72ce7bc9741374d96fb2f1c9a8960829885f1243ffde743de70a19cee353e8f3"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
|
colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
|
||||||
GitPython = ">=1.0.1"
|
GitPython = ">=3.1.30"
|
||||||
PyYAML = ">=5.3.1"
|
PyYAML = ">=5.3.1"
|
||||||
rich = "*"
|
rich = "*"
|
||||||
stevedore = ">=1.20.0"
|
stevedore = ">=1.20.0"
|
||||||
@@ -82,29 +82,33 @@ lxml = ["lxml"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "black"
|
name = "black"
|
||||||
version = "23.11.0"
|
version = "23.12.0"
|
||||||
description = "The uncompromising code formatter."
|
description = "The uncompromising code formatter."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"},
|
{file = "black-23.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67f19562d367468ab59bd6c36a72b2c84bc2f16b59788690e02bbcb140a77175"},
|
||||||
{file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"},
|
{file = "black-23.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bbd75d9f28a7283b7426160ca21c5bd640ca7cd8ef6630b4754b6df9e2da8462"},
|
||||||
{file = "black-23.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394"},
|
{file = "black-23.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:593596f699ca2dcbbbdfa59fcda7d8ad6604370c10228223cd6cf6ce1ce7ed7e"},
|
||||||
{file = "black-23.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f"},
|
{file = "black-23.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:12d5f10cce8dc27202e9a252acd1c9a426c83f95496c959406c96b785a92bb7d"},
|
||||||
{file = "black-23.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479"},
|
{file = "black-23.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e73c5e3d37e5a3513d16b33305713237a234396ae56769b839d7c40759b8a41c"},
|
||||||
{file = "black-23.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244"},
|
{file = "black-23.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba09cae1657c4f8a8c9ff6cfd4a6baaf915bb4ef7d03acffe6a2f6585fa1bd01"},
|
||||||
{file = "black-23.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221"},
|
{file = "black-23.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace64c1a349c162d6da3cef91e3b0e78c4fc596ffde9413efa0525456148873d"},
|
||||||
{file = "black-23.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5"},
|
{file = "black-23.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:72db37a2266b16d256b3ea88b9affcdd5c41a74db551ec3dd4609a59c17d25bf"},
|
||||||
{file = "black-23.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187"},
|
{file = "black-23.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fdf6f23c83078a6c8da2442f4d4eeb19c28ac2a6416da7671b72f0295c4a697b"},
|
||||||
{file = "black-23.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6"},
|
{file = "black-23.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39dda060b9b395a6b7bf9c5db28ac87b3c3f48d4fdff470fa8a94ab8271da47e"},
|
||||||
{file = "black-23.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b"},
|
{file = "black-23.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7231670266ca5191a76cb838185d9be59cfa4f5dd401b7c1c70b993c58f6b1b5"},
|
||||||
{file = "black-23.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142"},
|
{file = "black-23.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:193946e634e80bfb3aec41830f5d7431f8dd5b20d11d89be14b84a97c6b8bc75"},
|
||||||
{file = "black-23.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055"},
|
{file = "black-23.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcf91b01ddd91a2fed9a8006d7baa94ccefe7e518556470cf40213bd3d44bbbc"},
|
||||||
{file = "black-23.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4"},
|
{file = "black-23.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:996650a89fe5892714ea4ea87bc45e41a59a1e01675c42c433a35b490e5aa3f0"},
|
||||||
{file = "black-23.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06"},
|
{file = "black-23.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdbff34c487239a63d86db0c9385b27cdd68b1bfa4e706aa74bb94a435403672"},
|
||||||
{file = "black-23.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07"},
|
{file = "black-23.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:97af22278043a6a1272daca10a6f4d36c04dfa77e61cbaaf4482e08f3640e9f0"},
|
||||||
{file = "black-23.11.0-py3-none-any.whl", hash = "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e"},
|
{file = "black-23.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ead25c273adfad1095a8ad32afdb8304933efba56e3c1d31b0fee4143a1e424a"},
|
||||||
{file = "black-23.11.0.tar.gz", hash = "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05"},
|
{file = "black-23.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c71048345bdbced456cddf1622832276d98a710196b842407840ae8055ade6ee"},
|
||||||
|
{file = "black-23.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a832b6e00eef2c13b3239d514ea3b7d5cc3eaa03d0474eedcbbda59441ba5d"},
|
||||||
|
{file = "black-23.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:6a82a711d13e61840fb11a6dfecc7287f2424f1ca34765e70c909a35ffa7fb95"},
|
||||||
|
{file = "black-23.12.0-py3-none-any.whl", hash = "sha256:a7c07db8200b5315dc07e331dda4d889a56f6bf4db6a9c2a526fa3166a81614f"},
|
||||||
|
{file = "black-23.12.0.tar.gz", hash = "sha256:330a327b422aca0634ecd115985c1c7fd7bdb5b5a2ef8aa9888a82e2ebe9437a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -118,7 +122,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
|
|||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
colorama = ["colorama (>=0.4.3)"]
|
colorama = ["colorama (>=0.4.3)"]
|
||||||
d = ["aiohttp (>=3.7.4)"]
|
d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
|
||||||
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
||||||
uvloop = ["uvloop (>=0.15.2)"]
|
uvloop = ["uvloop (>=0.15.2)"]
|
||||||
|
|
||||||
@@ -1153,20 +1157,17 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "isort"
|
name = "isort"
|
||||||
version = "5.12.0"
|
version = "5.13.2"
|
||||||
description = "A Python utility / library to sort Python imports."
|
description = "A Python utility / library to sort Python imports."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8.0"
|
python-versions = ">=3.8.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
|
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
|
||||||
{file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
|
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
colors = ["colorama (>=0.4.3)"]
|
colors = ["colorama (>=0.4.6)"]
|
||||||
pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
|
|
||||||
plugins = ["setuptools"]
|
|
||||||
requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itsdangerous"
|
name = "itsdangerous"
|
||||||
@@ -1690,7 +1691,7 @@ requests = ">=2.0.0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notifications-utils"
|
name = "notifications-utils"
|
||||||
version = "0.2.3"
|
version = "0.2.4"
|
||||||
description = ""
|
description = ""
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.9,<3.12"
|
python-versions = ">=3.9,<3.12"
|
||||||
@@ -1742,7 +1743,7 @@ werkzeug = "^3.0.1"
|
|||||||
type = "git"
|
type = "git"
|
||||||
url = "https://github.com/GSA/notifications-utils.git"
|
url = "https://github.com/GSA/notifications-utils.git"
|
||||||
reference = "HEAD"
|
reference = "HEAD"
|
||||||
resolved_reference = "4cdd67a377f4a6dea1f96b26ba5a1a4bca9afce3"
|
resolved_reference = "bd604dc32ea80b5d8a1157b09653e4bd4a755a6e"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "numpy"
|
name = "numpy"
|
||||||
@@ -1998,13 +1999,13 @@ testing = ["pytest", "pytest-benchmark"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pre-commit"
|
name = "pre-commit"
|
||||||
version = "3.5.0"
|
version = "3.6.0"
|
||||||
description = "A framework for managing and maintaining multi-language pre-commit hooks."
|
description = "A framework for managing and maintaining multi-language pre-commit hooks."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.9"
|
||||||
files = [
|
files = [
|
||||||
{file = "pre_commit-3.5.0-py2.py3-none-any.whl", hash = "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660"},
|
{file = "pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376"},
|
||||||
{file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"},
|
{file = "pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -3088,4 +3089,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.9,<3.12"
|
python-versions = ">=3.9,<3.12"
|
||||||
content-hash = "cbc1f1bd362257b864862976a30c1c80c8e2117378074593c46cdb96c32eae4c"
|
content-hash = "8a6fa375211952359f5993261b082558dae34ce3d80ee113ae51d10ecd426937"
|
||||||
|
|||||||
+3
-3
@@ -41,18 +41,18 @@ wtforms = "~=3.1"
|
|||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
bandit = "*"
|
bandit = "*"
|
||||||
beautifulsoup4 = "^4.12.2"
|
beautifulsoup4 = "^4.12.2"
|
||||||
black = "^23.11.0"
|
black = "^23.12.0"
|
||||||
coverage = "*"
|
coverage = "*"
|
||||||
freezegun = "^1.3.1"
|
freezegun = "^1.3.1"
|
||||||
flake8 = "^6.1.0"
|
flake8 = "^6.1.0"
|
||||||
flake8-bugbear = "^23.12.2"
|
flake8-bugbear = "^23.12.2"
|
||||||
flake8-print = "^5.0.0"
|
flake8-print = "^5.0.0"
|
||||||
flake8-pytest-style = "^1.7.2"
|
flake8-pytest-style = "^1.7.2"
|
||||||
isort = "^5.12.0"
|
isort = "^5.13.2"
|
||||||
jinja2-cli = {version = "==0.8.2", extras = ["yaml"]}
|
jinja2-cli = {version = "==0.8.2", extras = ["yaml"]}
|
||||||
moto = "^4.2"
|
moto = "^4.2"
|
||||||
pip-audit = "*"
|
pip-audit = "*"
|
||||||
pre-commit = "^3.5.0"
|
pre-commit = "^3.6.0"
|
||||||
pytest = "^7.4.3"
|
pytest = "^7.4.3"
|
||||||
pytest-env = "^1.1.3"
|
pytest-env = "^1.1.3"
|
||||||
pytest-mock = "^3.12.0"
|
pytest-mock = "^3.12.0"
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ def _mock_get_service_settings_page_common(
|
|||||||
"Notes None Change the notes for the service",
|
"Notes None Change the notes for the service",
|
||||||
"Organization Test organization Federal government Change organization for service",
|
"Organization Test organization Federal government Change organization for service",
|
||||||
"Rate limit 3,000 per minute Change rate limit",
|
"Rate limit 3,000 per minute Change rate limit",
|
||||||
"Message limit 1,000 per day Change daily message limit",
|
"Message batch limit 1,000 per send Change message batch limit",
|
||||||
"Free text message allowance 250,000 per year Change free text message allowance",
|
"Free text message allowance 250,000 per year Change free text message allowance",
|
||||||
"Email branding GOV.UK Change email branding (admin view)",
|
"Email branding GOV.UK Change email branding (admin view)",
|
||||||
"Custom data retention Email – 7 days Change data retention",
|
"Custom data retention Email – 7 days Change data retention",
|
||||||
@@ -3171,7 +3171,7 @@ def test_should_show_page_to_set_message_limit(
|
|||||||
client_request.login(platform_admin_user)
|
client_request.login(platform_admin_user)
|
||||||
page = client_request.get("main.set_message_limit", service_id=SERVICE_ONE_ID)
|
page = client_request.get("main.set_message_limit", service_id=SERVICE_ONE_ID)
|
||||||
assert normalize_spaces(page.select_one("label").text) == (
|
assert normalize_spaces(page.select_one("label").text) == (
|
||||||
"Number of messages the service is allowed to send each day"
|
"Max number of messages the service has per send"
|
||||||
)
|
)
|
||||||
assert normalize_spaces(page.select_one("input[type=text]")["value"]) == ("1000")
|
assert normalize_spaces(page.select_one("input[type=text]")["value"]) == ("1000")
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,15 @@ def test_owasp_useful_headers_set(
|
|||||||
assert search(
|
assert search(
|
||||||
r"script-src 'self' static\.example\.com 'unsafe-eval' https:\/\/js-agent\.new"
|
r"script-src 'self' static\.example\.com 'unsafe-eval' https:\/\/js-agent\.new"
|
||||||
r"relic\.com https:\/\/gov-bam\.nr-data\.net https:\/\/www\.googletagmanager\."
|
r"relic\.com https:\/\/gov-bam\.nr-data\.net https:\/\/www\.googletagmanager\."
|
||||||
r"com 'nonce-.*';",
|
r"com https:\/\/www\.google-analytics\."
|
||||||
|
r"com https:\/\/dap\.digitalgov\."
|
||||||
|
r"gov 'nonce-.*';",
|
||||||
|
csp,
|
||||||
|
)
|
||||||
|
assert search(
|
||||||
|
r"connect-src 'self' https:\/\/gov-bam.nr-data\.net https:\/\/www\.google-analytics\."
|
||||||
|
r"com;",
|
||||||
csp,
|
csp,
|
||||||
)
|
)
|
||||||
assert search(r"connect-src 'self' https:\/\/gov-bam.nr-data\.net;", csp)
|
|
||||||
assert search(r"style-src 'self' static\.example\.com 'nonce-.*';", csp)
|
assert search(r"style-src 'self' static\.example\.com 'nonce-.*';", csp)
|
||||||
assert search(r"img-src 'self' static\.example\.com static-logos\.test\.com", csp)
|
assert search(r"img-src 'self' static\.example\.com static-logos\.test\.com", csp)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ def test_non_logged_in_user_can_see_homepage(
|
|||||||
client_request.logout()
|
client_request.logout()
|
||||||
page = client_request.get("main.index", _test_page_title=False)
|
page = client_request.get("main.index", _test_page_title=False)
|
||||||
|
|
||||||
assert page.h1.text.strip() == ("Send text messages to your participants")
|
assert page.h1.text.strip() == ("Reach people where they are with government-powered text messages")
|
||||||
|
|
||||||
assert page.select_one("a.usa-button.usa-button--big")["href"] == url_for(
|
assert page.select_one("a.usa-button.usa-button--big")["href"] == url_for(
|
||||||
"main.sign_in",
|
"main.sign_in",
|
||||||
|
|||||||
@@ -762,9 +762,9 @@ def test_edit_user_permissions_shows_authentication_for_email_auth_service(
|
|||||||
def test_should_show_page_for_inviting_user(
|
def test_should_show_page_for_inviting_user(
|
||||||
client_request,
|
client_request,
|
||||||
mock_get_template_folders,
|
mock_get_template_folders,
|
||||||
platform_admin_user,
|
active_user_with_permissions,
|
||||||
):
|
):
|
||||||
client_request.login(platform_admin_user)
|
client_request.login(active_user_with_permissions)
|
||||||
page = client_request.get(
|
page = client_request.get(
|
||||||
"main.invite_user",
|
"main.invite_user",
|
||||||
service_id=SERVICE_ONE_ID,
|
service_id=SERVICE_ONE_ID,
|
||||||
@@ -774,6 +774,17 @@ def test_should_show_page_for_inviting_user(
|
|||||||
assert not page.find("div", class_="checkboxes-nested")
|
assert not page.find("div", class_="checkboxes-nested")
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_not_show_page_for_inviting_user_without_permissions(
|
||||||
|
client_request, mock_get_template_folders, active_user_empty_permissions
|
||||||
|
):
|
||||||
|
client_request.login(active_user_empty_permissions)
|
||||||
|
page = client_request.get(
|
||||||
|
"main.invite_user", service_id=SERVICE_ONE_ID, _expected_status=403
|
||||||
|
)
|
||||||
|
|
||||||
|
assert "not allowed to see this page" in page.h1.string.strip()
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_page_for_inviting_user_with_email_prefilled(
|
def test_should_show_page_for_inviting_user_with_email_prefilled(
|
||||||
client_request,
|
client_request,
|
||||||
mocker,
|
mocker,
|
||||||
@@ -801,9 +812,12 @@ def test_should_show_page_for_inviting_user_with_email_prefilled(
|
|||||||
# We have the user’s name in the H1 but don’t want it duplicated
|
# We have the user’s name in the H1 but don’t want it duplicated
|
||||||
# in the page title
|
# in the page title
|
||||||
_test_page_title=False,
|
_test_page_title=False,
|
||||||
_expected_status=403,
|
|
||||||
)
|
)
|
||||||
assert "not allowed to see this page" in page.h1.string.strip()
|
assert normalize_spaces(page.select_one("title").text).startswith(
|
||||||
|
"Invite a team member"
|
||||||
|
)
|
||||||
|
assert normalize_spaces(page.select_one("h1").text) == ("Invite Service Two User")
|
||||||
|
assert not page.select("input#email_address") or page.select("input[type=email]")
|
||||||
|
|
||||||
|
|
||||||
def test_should_show_page_if_prefilled_user_is_already_a_team_member(
|
def test_should_show_page_if_prefilled_user_is_already_a_team_member(
|
||||||
@@ -813,9 +827,8 @@ def test_should_show_page_if_prefilled_user_is_already_a_team_member(
|
|||||||
fake_uuid,
|
fake_uuid,
|
||||||
active_user_with_permissions,
|
active_user_with_permissions,
|
||||||
active_caseworking_user,
|
active_caseworking_user,
|
||||||
platform_admin_user,
|
|
||||||
):
|
):
|
||||||
client_request.login(platform_admin_user)
|
client_request.login(active_user_with_permissions)
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"app.models.user.user_api_client.get_user",
|
"app.models.user.user_api_client.get_user",
|
||||||
side_effect=[
|
side_effect=[
|
||||||
@@ -1280,9 +1293,11 @@ def test_user_cant_invite_themselves(
|
|||||||
"permissions_field": ["send_messages", "manage_service", "manage_api_keys"],
|
"permissions_field": ["send_messages", "manage_service", "manage_api_keys"],
|
||||||
},
|
},
|
||||||
_follow_redirects=True,
|
_follow_redirects=True,
|
||||||
_expected_status=403,
|
_expected_status=200,
|
||||||
)
|
)
|
||||||
assert "not allowed to see this page" in page.h1.string.strip()
|
assert page.h1.string.strip() == "Invite a team member"
|
||||||
|
form_error = page.find("span", class_="usa-error-message").text.strip()
|
||||||
|
assert form_error == "Error: You cannot send an invitation to yourself"
|
||||||
assert not mock_create_invite.called
|
assert not mock_create_invite.called
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,18 +58,10 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["Email", "Text message"],
|
["Email", "Text message"],
|
||||||
[
|
[
|
||||||
"folder_one folder_one 2 folders",
|
"folder_one folder_one 2 folders",
|
||||||
("folder_one folder_one_one " "folder_one folder_one_one " "1 folder"),
|
("folder_one folder_one_one " "folder_one_one"),
|
||||||
(
|
("folder_one folder_one_one folder_one_one_one " "folder_one_one_one"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
("folder_one folder_one_one folder_one_one_one sms_template_nested"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
("folder_one folder_one_two " "folder_one_two"),
|
||||||
"1 template"
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
("folder_one folder_one_two " "folder_one folder_one_two " "Empty"),
|
|
||||||
"folder_two folder_two Empty",
|
"folder_two folder_two Empty",
|
||||||
("sms_template_one " "sms_template_one " "Text message template"),
|
("sms_template_one " "sms_template_one " "Text message template"),
|
||||||
("sms_template_two " "sms_template_two " "Text message template"),
|
("sms_template_two " "sms_template_two " "Text message template"),
|
||||||
@@ -88,7 +80,6 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
"folder_one",
|
"folder_one",
|
||||||
"folder_one_one",
|
"folder_one_one",
|
||||||
"folder_one_one_one",
|
"folder_one_one_one",
|
||||||
"sms_template_nested",
|
|
||||||
"folder_one_two",
|
"folder_one_two",
|
||||||
"folder_two",
|
"folder_two",
|
||||||
"sms_template_one",
|
"sms_template_one",
|
||||||
@@ -106,18 +97,10 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["Email", "Text message"],
|
["Email", "Text message"],
|
||||||
[
|
[
|
||||||
"folder_one folder_one 2 folders",
|
"folder_one folder_one 2 folders",
|
||||||
("folder_one folder_one_one " "folder_one folder_one_one " "1 folder"),
|
("folder_one folder_one_one " "folder_one_one"),
|
||||||
(
|
("folder_one folder_one_one folder_one_one_one " "folder_one_one_one"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
("folder_one folder_one_one folder_one_one_one sms_template_nested"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
("folder_one folder_one_two " "folder_one_two"),
|
||||||
"1 template"
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
("folder_one folder_one_two " "folder_one folder_one_two " "Empty"),
|
|
||||||
"folder_two folder_two Empty",
|
"folder_two folder_two Empty",
|
||||||
"sms_template_one sms_template_one Text message template",
|
"sms_template_one sms_template_one Text message template",
|
||||||
"sms_template_two sms_template_two Text message template",
|
"sms_template_two sms_template_two Text message template",
|
||||||
@@ -136,7 +119,6 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
"folder_one",
|
"folder_one",
|
||||||
"folder_one_one",
|
"folder_one_one",
|
||||||
"folder_one_one_one",
|
"folder_one_one_one",
|
||||||
"sms_template_nested",
|
|
||||||
"folder_one_two",
|
"folder_one_two",
|
||||||
"folder_two",
|
"folder_two",
|
||||||
"sms_template_one",
|
"sms_template_one",
|
||||||
@@ -154,17 +136,9 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["All", "Email"],
|
["All", "Email"],
|
||||||
[
|
[
|
||||||
"folder_one folder_one 1 folder",
|
"folder_one folder_one 1 folder",
|
||||||
("folder_one folder_one_one " "folder_one folder_one_one " "1 folder"),
|
("folder_one folder_one_one " "folder_one_one"),
|
||||||
(
|
("folder_one folder_one_one folder_one_one_one " "folder_one_one_one"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
("folder_one folder_one_one folder_one_one_one sms_template_nested"),
|
||||||
"folder_one folder_one_one folder_one_one_one "
|
|
||||||
"1 template"
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
"sms_template_one sms_template_one Text message template",
|
"sms_template_one sms_template_one Text message template",
|
||||||
"sms_template_two sms_template_two Text message template",
|
"sms_template_two sms_template_two Text message template",
|
||||||
],
|
],
|
||||||
@@ -177,7 +151,6 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
"folder_one",
|
"folder_one",
|
||||||
"folder_one_one",
|
"folder_one_one",
|
||||||
"folder_one_one_one",
|
"folder_one_one_one",
|
||||||
"sms_template_nested",
|
|
||||||
"sms_template_one",
|
"sms_template_one",
|
||||||
"sms_template_two",
|
"sms_template_two",
|
||||||
],
|
],
|
||||||
@@ -191,16 +164,8 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["Email", "Text message"],
|
["Email", "Text message"],
|
||||||
[
|
[
|
||||||
"folder_one_one folder_one_one 1 folder",
|
"folder_one_one folder_one_one 1 folder",
|
||||||
(
|
("folder_one_one folder_one_one_one " "folder_one_one_one"),
|
||||||
"folder_one_one folder_one_one_one "
|
("folder_one_one folder_one_one_one sms_template_nested"),
|
||||||
"folder_one_one folder_one_one_one "
|
|
||||||
"1 template"
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
"folder_one_two folder_one_two Empty",
|
"folder_one_two folder_one_two Empty",
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -210,7 +175,6 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
[
|
[
|
||||||
"folder_one_one",
|
"folder_one_one",
|
||||||
"folder_one_one_one",
|
"folder_one_one_one",
|
||||||
"sms_template_nested",
|
|
||||||
"folder_one_two",
|
"folder_one_two",
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
@@ -223,25 +187,13 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["All", "Email"],
|
["All", "Email"],
|
||||||
[
|
[
|
||||||
"folder_one_one folder_one_one 1 folder",
|
"folder_one_one folder_one_one 1 folder",
|
||||||
(
|
("folder_one_one folder_one_one_one " "folder_one_one_one"),
|
||||||
"folder_one_one folder_one_one_one "
|
("folder_one_one folder_one_one_one sms_template_nested"),
|
||||||
"folder_one_one folder_one_one_one "
|
|
||||||
"1 template"
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one_one folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"folder_one_one folder_one_one 1 folder",
|
"folder_one_one folder_one_one 1 folder",
|
||||||
],
|
],
|
||||||
[
|
["folder_one_one", "folder_one_one_one"],
|
||||||
"folder_one_one",
|
|
||||||
"folder_one_one_one",
|
|
||||||
"sms_template_nested",
|
|
||||||
],
|
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@@ -266,19 +218,12 @@ def _folder(name, folder_id=None, parent=None, users_with_permission=None):
|
|||||||
["Email", "Text message"],
|
["Email", "Text message"],
|
||||||
[
|
[
|
||||||
"folder_one_one_one folder_one_one_one 1 template",
|
"folder_one_one_one folder_one_one_one 1 template",
|
||||||
(
|
("folder_one_one_one sms_template_nested"),
|
||||||
"folder_one_one_one sms_template_nested "
|
|
||||||
"folder_one_one_one sms_template_nested "
|
|
||||||
"Text message template"
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"folder_one_one_one folder_one_one_one 1 template",
|
"folder_one_one_one folder_one_one_one 1 template",
|
||||||
],
|
],
|
||||||
[
|
["folder_one_one_one"],
|
||||||
"folder_one_one_one",
|
|
||||||
"sms_template_nested",
|
|
||||||
],
|
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@@ -502,7 +447,6 @@ def test_template_id_is_searchable_for_services_with_api_keys(
|
|||||||
)
|
)
|
||||||
] == [
|
] == [
|
||||||
"folder one",
|
"folder one",
|
||||||
f'{template_2["id"]} template two',
|
|
||||||
f'{template_1["id"]} template one',
|
f'{template_1["id"]} template one',
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -523,10 +467,7 @@ def test_template_id_is_searchable_for_services_with_api_keys(
|
|||||||
# Text which should be hidden from all users
|
# Text which should be hidden from all users
|
||||||
r".template-list-item .display-none"
|
r".template-list-item .display-none"
|
||||||
)
|
)
|
||||||
] == [
|
] == [template_1["id"]]
|
||||||
template_2["id"],
|
|
||||||
template_1["id"],
|
|
||||||
]
|
|
||||||
|
|
||||||
mock_get_api_keys.assert_called_once_with(SERVICE_ONE_ID)
|
mock_get_api_keys.assert_called_once_with(SERVICE_ONE_ID)
|
||||||
|
|
||||||
@@ -1707,21 +1648,10 @@ def test_show_custom_error_message(
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
["folder_A", "folder_A", "1 template, 2 folders"],
|
["folder_A", "folder_A", "1 template, 2 folders"],
|
||||||
["folder_A folder_C", "folder_A", "folder_C", "1 template"],
|
["folder_A folder_C", "folder_C"],
|
||||||
[
|
["folder_A folder_C sms_template_C"],
|
||||||
"folder_A folder_C sms_template_C",
|
["folder_A folder_D", "folder_D"],
|
||||||
"folder_A",
|
["folder_A sms_template_A"],
|
||||||
"folder_C",
|
|
||||||
"sms_template_C",
|
|
||||||
"Text message template",
|
|
||||||
],
|
|
||||||
["folder_A folder_D", "folder_A", "folder_D", "Empty"],
|
|
||||||
[
|
|
||||||
"folder_A sms_template_A",
|
|
||||||
"folder_A",
|
|
||||||
"sms_template_A",
|
|
||||||
"Text message template",
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"folder_E folder_F folder_G",
|
"folder_E folder_F folder_G",
|
||||||
"folder_E",
|
"folder_E",
|
||||||
@@ -1729,14 +1659,7 @@ def test_show_custom_error_message(
|
|||||||
"folder_G",
|
"folder_G",
|
||||||
"1 template",
|
"1 template",
|
||||||
],
|
],
|
||||||
[
|
["folder_E folder_F folder_G email_template_G"],
|
||||||
"folder_E folder_F folder_G email_template_G",
|
|
||||||
"folder_E",
|
|
||||||
"folder_F",
|
|
||||||
"folder_G",
|
|
||||||
"email_template_G",
|
|
||||||
"Email template",
|
|
||||||
],
|
|
||||||
["email_template_root", "email_template_root", "Email template"],
|
["email_template_root", "email_template_root", "Email template"],
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
@@ -1763,11 +1686,6 @@ def test_show_custom_error_message(
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"folder_E folder_F folder_G email_template_G",
|
"folder_E folder_F folder_G email_template_G",
|
||||||
"folder_E",
|
|
||||||
"folder_F",
|
|
||||||
"folder_G",
|
|
||||||
"email_template_G",
|
|
||||||
"Email template",
|
|
||||||
],
|
],
|
||||||
["email_template_root", "email_template_root", "Email template"],
|
["email_template_root", "email_template_root", "Email template"],
|
||||||
],
|
],
|
||||||
@@ -1780,20 +1698,9 @@ def test_show_custom_error_message(
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
["folder_A", "folder_A", "1 template, 1 folder"],
|
["folder_A", "folder_A", "1 template, 1 folder"],
|
||||||
["folder_A folder_C", "folder_A", "folder_C", "1 template"],
|
["folder_A folder_C", "folder_C"],
|
||||||
[
|
["folder_A folder_C sms_template_C"],
|
||||||
"folder_A folder_C sms_template_C",
|
["folder_A sms_template_A"],
|
||||||
"folder_A",
|
|
||||||
"folder_C",
|
|
||||||
"sms_template_C",
|
|
||||||
"Text message template",
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"folder_A sms_template_A",
|
|
||||||
"folder_A",
|
|
||||||
"sms_template_A",
|
|
||||||
"Text message template",
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -632,7 +632,7 @@ def test_should_show_sms_template_with_downgraded_unicode_characters(
|
|||||||
fake_uuid,
|
fake_uuid,
|
||||||
):
|
):
|
||||||
msg = "here:\tare some “fancy quotes” and zero\u200Bwidth\u200Bspaces"
|
msg = "here:\tare some “fancy quotes” and zero\u200Bwidth\u200Bspaces"
|
||||||
rendered_msg = 'here: are some "fancy quotes" and zerowidthspaces'
|
rendered_msg = 'here: are some “fancy quotes” and zerowidthspaces'
|
||||||
|
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
"app.service_api_client.get_service_template",
|
"app.service_api_client.get_service_template",
|
||||||
|
|||||||
@@ -1067,6 +1067,11 @@ def active_user_with_permissions(fake_uuid):
|
|||||||
return create_active_user_with_permissions()
|
return create_active_user_with_permissions()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def active_user_empty_permissions(fake_uuid):
|
||||||
|
return create_active_user_empty_permissions()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def active_user_with_permission_to_two_services(fake_uuid):
|
def active_user_with_permission_to_two_services(fake_uuid):
|
||||||
permissions = [
|
permissions = [
|
||||||
|
|||||||
Reference in New Issue
Block a user