diff --git a/app/__init__.py b/app/__init__.py index 958a324f8..204b03af9 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -100,6 +100,9 @@ from app.notify_client.letter_jobs_client import letter_jobs_client from app.notify_client.notification_api_client import notification_api_client from app.notify_client.org_invite_api_client import org_invite_api_client from app.notify_client.organisations_api_client import organisations_client +from app.notify_client.performance_platform_api_client import ( + performance_platform_api_client, +) from app.notify_client.platform_stats_api_client import ( platform_stats_api_client, ) @@ -185,6 +188,7 @@ def create_app(application): notification_api_client, org_invite_api_client, organisations_client, + performance_platform_api_client, platform_stats_api_client, provider_client, service_api_client, diff --git a/app/main/__init__.py b/app/main/__init__.py index d5620b705..c77effb0e 100644 --- a/app/main/__init__.py +++ b/app/main/__init__.py @@ -27,6 +27,7 @@ from app.main.views import ( # noqa isort:skip new_password, notifications, organisations, + performance_platform, platform_admin, providers, register, diff --git a/app/main/views/performance_platform.py b/app/main/views/performance_platform.py new file mode 100644 index 000000000..b0857dc1b --- /dev/null +++ b/app/main/views/performance_platform.py @@ -0,0 +1,21 @@ +from datetime import datetime, timedelta + +from flask import jsonify, request + +from app import performance_platform_api_client +from app.main import main +from app.main.forms import DateFilterForm + + +@main.route("/performance-platform") +def performance_platform(): + form = DateFilterForm(request.args, meta={'csrf': False}) + api_args = {} + + form.validate() + # default date range is 3 months + api_args['start_date'] = form.start_date.data or datetime.utcnow().date - timedelta(months=3) + api_args['end_date'] = form.end_date.data or datetime.utcnow().date() + + stats = performance_platform_api_client.get_performance_platform_stats(api_args) + return jsonify(stats) diff --git a/app/notify_client/performance_platform_api_client.py b/app/notify_client/performance_platform_api_client.py new file mode 100644 index 000000000..a82b77e64 --- /dev/null +++ b/app/notify_client/performance_platform_api_client.py @@ -0,0 +1,10 @@ +from app.notify_client import NotifyAdminAPIClient + + +class PerformancePlatformAPIClient(NotifyAdminAPIClient): + + def get_performance_platform_stats(self, params_dict=None): + return self.get("/performance-platform", params=params_dict) + + +performance_platform_api_client = PerformancePlatformAPIClient() diff --git a/tests/app/notify_client/test_performance_platform_api_client.py b/tests/app/notify_client/test_performance_platform_api_client.py new file mode 100644 index 000000000..d2ffecdd4 --- /dev/null +++ b/tests/app/notify_client/test_performance_platform_api_client.py @@ -0,0 +1,12 @@ +from app.notify_client.performance_platform_api_client import ( + PerformancePlatformAPIClient, +) + + +def test_get_aggregate_platform_stats(mocker): + client = PerformancePlatformAPIClient() + mock = mocker.patch.object(client, 'get') + params_dict = {'start_date': '2021-03-01', 'end_date': '2021-03-31'} + + client.get_performance_platform_stats(params_dict=params_dict) + mock.assert_called_once_with('/performance-platform', params=params_dict)