diff --git a/app/__init__.py b/app/__init__.py index 1694fe018..21f0c8e03 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -284,6 +284,7 @@ def init_app(application): @application.context_processor def _attach_current_global_daily_messages(): + global_limit = 0 remaining_global_messages = 0 if current_app: if request.view_args: @@ -301,7 +302,10 @@ def init_app(application): remaining_global_messages = global_limit - global_messages_count.get( "count" ) - return {"daily_global_messages_remaining": remaining_global_messages} + return { + "global_message_limit": global_limit, + "daily_global_messages_remaining": remaining_global_messages, + } @application.before_request def record_start_time(): diff --git a/app/assets/javascripts/date.js b/app/assets/javascripts/date.js new file mode 100644 index 000000000..1d6a0d353 --- /dev/null +++ b/app/assets/javascripts/date.js @@ -0,0 +1,9 @@ +(function (window) { + + "use strict"; + + // Show the current year + document.getElementById("current-year").innerHTML = new Date().getFullYear(); + + +})(window); diff --git a/app/templates/views/dashboard/_usage.html b/app/templates/views/dashboard/_usage.html index e7f9e5f07..a2e46d007 100644 --- a/app/templates/views/dashboard/_usage.html +++ b/app/templates/views/dashboard/_usage.html @@ -15,7 +15,7 @@ - {{ big_number(40000 - sms_allowance_remaining, smaller=True) }} + {{ big_number(sms_sent, smaller=True) }} {% if sms_cost %} {{ big_number( diff --git a/app/templates/views/dashboard/dashboard.html b/app/templates/views/dashboard/dashboard.html index 851629621..828c83101 100644 --- a/app/templates/views/dashboard/dashboard.html +++ b/app/templates/views/dashboard/dashboard.html @@ -45,7 +45,7 @@ - {{ 5000 - daily_global_messages_remaining }} + {{ global_message_limit - daily_global_messages_remaining }} {{ daily_global_messages_remaining }} @@ -54,7 +54,7 @@ {% if current_user.has_permissions('manage_service') %} -

2023

+

{{ ajax_block(partials, updates_url, 'usage') }} {{ show_more( url_for(".usage", service_id=current_service['id']), diff --git a/app/templates/views/usage.html b/app/templates/views/usage.html index a9801aabd..87ce5ade8 100644 --- a/app/templates/views/usage.html +++ b/app/templates/views/usage.html @@ -22,7 +22,7 @@

Daily messages across all services

-

You have sent {{ 5000 - daily_global_messages_remaining }} of your 5000 daily messages allowance.

+

You have sent {{ global_message_limit - daily_global_messages_remaining }} of your {{ global_message_limit }} daily messages allowance.

You have {{ daily_global_messages_remaining }} messages remaining.

Text messages

diff --git a/gulpfile.js b/gulpfile.js index f26ef6f39..541c39cf4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -126,6 +126,7 @@ const javascripts = () => { paths.src + 'javascripts/errorBanner.js', paths.src + 'javascripts/homepage.js', paths.src + 'javascripts/timeoutPopup.js', + paths.src + 'javascripts/date.js', paths.src + 'javascripts/main.js', ]) .pipe(plugins.prettyerror()) diff --git a/poetry.lock b/poetry.lock index 68a247592..ff50d9b19 100644 --- a/poetry.lock +++ b/poetry.lock @@ -625,13 +625,13 @@ six = ">=1.10.0" [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -1054,13 +1054,13 @@ lxml = ["lxml"] [[package]] name = "humanize" -version = "4.8.0" +version = "4.9.0" description = "Python humanize utilities" optional = false python-versions = ">=3.8" files = [ - {file = "humanize-4.8.0-py3-none-any.whl", hash = "sha256:8bc9e2bb9315e61ec06bf690151ae35aeb65651ab091266941edf97c90836404"}, - {file = "humanize-4.8.0.tar.gz", hash = "sha256:9783373bf1eec713a770ecaa7c2d7a7902c98398009dfa3d8a2df91eec9311e8"}, + {file = "humanize-4.9.0-py3-none-any.whl", hash = "sha256:ce284a76d5b1377fd8836733b983bfb0b76f1aa1c090de2566fcf008d7f6ab16"}, + {file = "humanize-4.9.0.tar.gz", hash = "sha256:582a265c931c683a7e9b8ed9559089dea7edcf6cc95be39a3cbc2c5d5ac2bcfa"}, ] [package.extras] @@ -2265,13 +2265,13 @@ python-slugify = ">=6.0.0,<9.0.0" [[package]] name = "pytest-xdist" -version = "3.4.0" +version = "3.5.0" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-xdist-3.4.0.tar.gz", hash = "sha256:3a94a931dd9e268e0b871a877d09fe2efb6175c2c23d60d56a6001359002b832"}, - {file = "pytest_xdist-3.4.0-py3-none-any.whl", hash = "sha256:e513118bf787677a427e025606f55e95937565e06dfaac8d87f55301e57ae607"}, + {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, + {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, ] [package.dependencies] @@ -2970,4 +2970,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "4a38fa6c01f64c2e813d2e65aa22334357fe8785fc76c2008668ed9eab7a27de" +content-hash = "f49ee7dbab2abe9884ac8576ebe3b654d5ba7754249908ccb5c50e05c2629666" diff --git a/pyproject.toml b/pyproject.toml index 661af4e57..f325a2212 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ readme = "README.md" python = ">=3.9,<3.12" ago = "~=0.0.95" blinker = "~=1.7" -exceptiongroup = "==1.1.3" +exceptiongroup = "==1.2.0" flask = "~=2.3" flask-basicauth = "~=0.2" flask-login = "^0.6" @@ -18,7 +18,7 @@ flask-wtf = "^1.2" govuk-bank-holidays = "==0.13" govuk-frontend-jinja = {git = "https://github.com/alphagov/govuk-frontend-jinja.git", tag = "v0.5.8-alpha"} gunicorn = {version = "==21.2.0", extras = ["eventlet"]} -humanize = "~=4.8" +humanize = "~=4.9" itsdangerous = "~=2.1" jinja2 = "~=3.1" newrelic = "*" @@ -56,7 +56,7 @@ pytest = "^7.4.3" pytest-env = "^1.1.1" pytest-mock = "^3.12.0" pytest-playwright = "^0.4.3" -pytest-xdist = "^3.4.0" +pytest-xdist = "^3.5.0" radon = "^6.0.1" requests-mock = "^1.11.0" vulture = "^2.10" diff --git a/tests/app/main/views/test_dashboard.py b/tests/app/main/views/test_dashboard.py index f0e07f105..031bc0316 100644 --- a/tests/app/main/views/test_dashboard.py +++ b/tests/app/main/views/test_dashboard.py @@ -1517,6 +1517,7 @@ def test_breadcrumb_shows_if_service_is_suspended( ], ) def test_service_dashboard_shows_usage( + mocker, client_request, service_one, mock_get_service_templates, @@ -1526,18 +1527,22 @@ def test_service_dashboard_shows_usage( mock_get_free_sms_fragment_limit, permissions, ): + mocker.patch( + "app.service_api_client.get_global_notification_count", + return_value={ + "count": 500, + }, + ) + service_one["permissions"] = permissions page = client_request.get("main.service_dashboard", service_id=SERVICE_ONE_ID) - assert normalize_spaces(page.select_one("[data-key=usage]").text) == ( - "Daily Usage Remaining " - "40,000 " - "$29.85 " - "spent on text messages" - # Disabled for pilot - # '0 ' - # 'email disabled during SMS pilot' - ) + table_rows = page.find_all("tbody")[0].find_all("tr") + + assert len(table_rows) == 1 + + assert "500" in table_rows[0].find_all("td")[0].text + assert "9500" in table_rows[0].find_all("td")[1].text def test_service_dashboard_shows_free_allowance( @@ -1566,4 +1571,4 @@ def test_service_dashboard_shows_free_allowance( usage_text = normalize_spaces(page.select_one("[data-key=usage]").text) assert "spent on text messages" not in usage_text - assert "Daily Usage Remaining -209,000 249,000" in usage_text + assert "Daily Usage Remaining 1,000 249,000" in usage_text