diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index b6cca8027..919856416 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -358,14 +358,17 @@ def dao_fetch_monthly_historical_stats_for_service(service_id, year): @statsd(namespace='dao') -def dao_fetch_todays_stats_for_all_services(include_from_test_key=True): +def dao_fetch_todays_stats_for_all_services(include_from_test_key=True, trial_mode_services=None): + query = db.session.query( Notification.notification_type, Notification.status, Notification.service_id, func.count(Notification.id).label('count') + ).join( + Service ).filter( - func.date(Notification.created_at) == date.today() + func.date(Notification.created_at) == date.today(), ).group_by( Notification.notification_type, Notification.status, @@ -377,6 +380,9 @@ def dao_fetch_todays_stats_for_all_services(include_from_test_key=True): if not include_from_test_key: query = query.filter(Notification.key_type != KEY_TYPE_TEST) + if trial_mode_services is not None: + query = query.filter(Service.restricted == trial_mode_services) + return query.all() diff --git a/app/schemas.py b/app/schemas.py index 96f64a24c..e880a1589 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -263,7 +263,19 @@ class DetailedServiceSchema(BaseSchema): 'organisation', 'service_sms_senders', 'monthly_billing', - 'reply_to_email_addresses' + 'reply_to_email_addresses', + 'letter_contact_block', # new exclude from here + 'message_limit', + 'email_from', + # 'free_sms_fragment_limit', + 'inbound_api', + 'dvla_organisation', + 'whitelist', + 'reply_to_email_address', + 'sms_sender', + 'permissions', + 'inbound_number', + 'inbound_sms' ) diff --git a/app/service/rest.py b/app/service/rest.py index 48f1e6f44..2010044cd 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -84,6 +84,7 @@ def get_services(): detailed = request.args.get('detailed') == 'True' user_id = request.args.get('user_id', None) include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False' + trial_mode_services = request.args.get('trial_mode_services') # If start and end date are not set, we are expecting today's stats. today = str(datetime.utcnow().date()) @@ -94,9 +95,12 @@ def get_services(): if user_id: services = dao_fetch_all_services_by_user(user_id, only_active) elif detailed: - return jsonify(data=get_detailed_services(start_date=start_date, end_date=end_date, - only_active=only_active, include_from_test_key=include_from_test_key - )) + result = jsonify(data=get_detailed_services(start_date=start_date, end_date=end_date, + only_active=only_active, + include_from_test_key=include_from_test_key, + trial_mode_services=trial_mode_services + )) + return result else: services = dao_fetch_all_services(only_active) data = service_schema.dump(services, many=True).data @@ -355,10 +359,12 @@ def get_detailed_service(service_id, today_only=False): return detailed_service_schema.dump(service).data -def get_detailed_services(start_date, end_date, only_active=False, include_from_test_key=True): +def get_detailed_services(start_date, end_date, only_active=False, include_from_test_key=True, + trial_mode_services=None): services = {service.id: service for service in dao_fetch_all_services(only_active)} if start_date == datetime.utcnow().date(): - stats = dao_fetch_todays_stats_for_all_services(include_from_test_key=include_from_test_key) + stats = dao_fetch_todays_stats_for_all_services(include_from_test_key=include_from_test_key, + trial_mode_services=trial_mode_services) else: stats = fetch_stats_by_date_range_for_all_services(start_date=start_date, diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 0551ec7c5..7881c3fdf 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1548,7 +1548,8 @@ def test_get_services_with_detailed_flag_accepts_date_range(client, mocker): start_date=date(2001, 1, 1), end_date=date(2002, 2, 2), only_active=ANY, - include_from_test_key=ANY + include_from_test_key=ANY, + trial_mode_services=ANY ) assert resp.status_code == 200 @@ -1562,11 +1563,13 @@ def test_get_services_with_detailed_flag_defaults_to_today(client, mocker): ) mock_get_detailed_services.assert_called_once_with( - start_date=date(2002, 2, 2), end_date=date(2002, 2, 2), + include_from_test_key=ANY, only_active=ANY, - include_from_test_key=ANY + start_date=date(2002, 2, 2), + trial_mode_services=ANY ) + assert resp.status_code == 200