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:
Ben Thorner
2022-04-06 11:56:05 +01:00
parent 770e8bd0a3
commit a3231effb1
3 changed files with 1 additions and 173 deletions

View File

@@ -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):

View File

@@ -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 ('&nbsp;'|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 %}

View File

@@ -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
# didnt 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'
)