mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-06-21 21:53:42 -04:00
Remove version history from provider ratio page
This doesn't work with 3 providers. You can still see the version history for each provider on their dedicated page.
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
from collections import defaultdict
|
||||
from datetime import datetime
|
||||
from operator import itemgetter
|
||||
|
||||
from flask import abort, render_template, url_for
|
||||
from werkzeug.utils import redirect
|
||||
|
||||
from app import format_date_numeric, provider_client
|
||||
from app import provider_client
|
||||
from app.main import main
|
||||
from app.main.forms import AdminProviderForm, AdminProviderRatioForm
|
||||
from app.utils.user import user_is_platform_admin
|
||||
@@ -82,41 +81,12 @@ def edit_sms_provider_ratio():
|
||||
|
||||
return render_template(
|
||||
'views/providers/edit-sms-provider-ratio.html',
|
||||
versions=_chunk_versions_by_day(_get_versions_since_switchover(first_provider['id'])),
|
||||
form=form,
|
||||
first_provider=providers[0]['display_name'],
|
||||
second_provider=providers[1]['display_name'],
|
||||
)
|
||||
|
||||
|
||||
def _get_versions_since_switchover(provider_id):
|
||||
|
||||
for version in sorted( # noqa: B020
|
||||
provider_client.get_provider_versions(provider_id)['data'],
|
||||
key=lambda version: version['updated_at'] or ''
|
||||
):
|
||||
|
||||
if not version['updated_at']:
|
||||
continue
|
||||
|
||||
if version['updated_at'] < PROVIDER_PRIORITY_MEANING_SWITCHOVER:
|
||||
continue
|
||||
|
||||
yield version
|
||||
|
||||
|
||||
def _chunk_versions_by_day(versions):
|
||||
|
||||
days = defaultdict(list)
|
||||
|
||||
for version in sorted(versions, key=lambda version: version['updated_at'] or '', reverse=True): # noqa: B020
|
||||
days[
|
||||
format_date_numeric(version['updated_at'])
|
||||
].append(version)
|
||||
|
||||
return sorted(days.items(), reverse=True)
|
||||
|
||||
|
||||
@main.route("/provider/<uuid:provider_id>")
|
||||
@user_is_platform_admin
|
||||
def view_provider(provider_id):
|
||||
|
||||
@@ -44,47 +44,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% for day, versions in versions %}
|
||||
<h2 class="heading-small top-gutter">
|
||||
{% if day %}
|
||||
{{ versions[0]['updated_at']|format_date_human|title }}
|
||||
{% else %}
|
||||
Start
|
||||
{% endif %}
|
||||
</h2>
|
||||
<ul class="bottom-gutter">
|
||||
{% for version in versions %}
|
||||
<li class="history-list-item">
|
||||
<div class="govuk-grid-row">
|
||||
<div class="govuk-grid-column-one-third">
|
||||
<div class="history-list-user">
|
||||
{{ version.created_by.name or (' '|safe) }}
|
||||
</div>
|
||||
{% if version.updated_at %}
|
||||
<div class="history-list-time">
|
||||
{{ version.updated_at|format_time }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="govuk-grid-column-two-thirds">
|
||||
<div class="history-list-percentage">
|
||||
<div class="history-list-percentage-left-label">
|
||||
{{ first_provider }}<br><br>
|
||||
{{ version.priority|format_thousands }}%
|
||||
</div>
|
||||
<div class="history-list-percentage-right-label">
|
||||
{{ second_provider }}<br><br>
|
||||
{{ (100 - version.priority)|format_thousands }}%
|
||||
</div>
|
||||
<div class="history-list-percentage-marker" style="left: {{ (100 -version.priority)|format_thousands }}%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -3,7 +3,6 @@ from unittest.mock import call
|
||||
|
||||
import pytest
|
||||
from flask import url_for
|
||||
from freezegun import freeze_time
|
||||
|
||||
import app
|
||||
from app.main.views.providers import add_monthly_traffic
|
||||
@@ -432,100 +431,6 @@ def test_should_show_provider_version_history(
|
||||
assert second_row[4].text.strip() == "True"
|
||||
|
||||
|
||||
@freeze_time('2022-2-22 15:00')
|
||||
def test_should_show_version_history_for_first_two_sms_providers(
|
||||
client_request,
|
||||
platform_admin_user,
|
||||
mocker,
|
||||
stub_providers,
|
||||
):
|
||||
mocker.patch(
|
||||
'app.provider_client.get_all_providers',
|
||||
return_value=stub_providers
|
||||
)
|
||||
|
||||
# Getting the history for one provider implicitly gives us the
|
||||
# history of the other one (in a world with only two providers).
|
||||
# The code picks the first provider in alphabetical order of its
|
||||
# id i.e. sms_provider_1.
|
||||
mocker.patch(
|
||||
'app.provider_client.get_provider_versions',
|
||||
return_value={'data': [
|
||||
{
|
||||
'id': id,
|
||||
'priority': priority,
|
||||
'display_name': sms_provider_1['display_name'],
|
||||
'identifier': sms_provider_1['identifier'],
|
||||
'updated_at': updated_at,
|
||||
'created_by': {
|
||||
'email_address': 'test@foo.bar',
|
||||
'name': 'Test User',
|
||||
'id': '7cc1dddb-bcbc-4739-8fc1-61bedde3332a'
|
||||
},
|
||||
'supports_international': False,
|
||||
}
|
||||
for updated_at, priority in [
|
||||
(datetime(2022, 2, 22, 14).isoformat(), 100),
|
||||
(datetime(2020, 1, 1, 5).isoformat(), 80),
|
||||
(datetime(2020, 1, 1, 3).isoformat(), 10),
|
||||
# Anything older than 11am on 29 November 2019
|
||||
# should be ignored because the priority numbers
|
||||
# didn’t mean the same thing before then
|
||||
(datetime(2019, 11, 29, 10, 59).isoformat(), 123),
|
||||
(datetime(2000, 1, 1, 0).isoformat(), 1999),
|
||||
(None, 30),
|
||||
]
|
||||
]}
|
||||
)
|
||||
|
||||
client_request.login(platform_admin_user)
|
||||
page = client_request.get('main.edit_sms_provider_ratio')
|
||||
|
||||
assert [
|
||||
radio['value']
|
||||
for radio in page.select('input[name=ratio]')
|
||||
] == [
|
||||
'100', '90', '80', '70', '60', '50', '40', '30', '20', '10', '0',
|
||||
]
|
||||
|
||||
assert [
|
||||
radio['value']
|
||||
for radio in page.select('input[checked]')
|
||||
] == [
|
||||
str(sms_provider_1['priority'])
|
||||
]
|
||||
|
||||
assert [
|
||||
normalize_spaces(heading.text)
|
||||
for heading in page.select('main h2')
|
||||
] == [
|
||||
'Now',
|
||||
'Today',
|
||||
'1 January 2020',
|
||||
]
|
||||
|
||||
assert [
|
||||
normalize_spaces(version.text)
|
||||
for version in page.select('li.history-list-item')
|
||||
] == [
|
||||
(
|
||||
'Test User 2:00pm '
|
||||
'First Domestic SMS Provider 100% '
|
||||
'Second Domestic SMS Provider 0%'
|
||||
),
|
||||
(
|
||||
'Test User 5:00am '
|
||||
'First Domestic SMS Provider 80% '
|
||||
'Second Domestic SMS Provider 20%'
|
||||
),
|
||||
(
|
||||
'Test User 3:00am '
|
||||
'First Domestic SMS Provider 10% '
|
||||
'Second Domestic SMS Provider 90%'
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('posted_number, expected_calls', [
|
||||
(
|
||||
'10',
|
||||
@@ -554,10 +459,6 @@ def test_should_update_priority_of_first_two_sms_providers(
|
||||
'app.provider_client.get_all_providers',
|
||||
return_value=stub_providers
|
||||
)
|
||||
mocker.patch(
|
||||
'app.provider_client.get_provider_versions',
|
||||
return_value={'data': []}
|
||||
)
|
||||
mock_update_provider = mocker.patch(
|
||||
'app.provider_client.update_provider'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user