mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-29 04:09:07 -04:00
We’re going to have different allowances next financial year. This means that when someone adds a service, we’ll need to check which year it is, so we can give them the right allowance. This commit changes the config structure so that the current allowances are explicitly assigned to the 2020/21 financial year. It freezes the tests to the 2020/21 financial year, so they won’t start failing automatically when next financial year comes around.
108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
from flask import current_app, redirect, render_template, session, url_for
|
||
from flask_login import current_user
|
||
from notifications_python_client.errors import HTTPError
|
||
|
||
from app import billing_api_client, service_api_client
|
||
from app.formatters import email_safe
|
||
from app.main import main
|
||
from app.main.forms import CreateNhsServiceForm, CreateServiceForm
|
||
from app.utils import (
|
||
get_current_financial_year,
|
||
user_is_gov_user,
|
||
user_is_logged_in,
|
||
)
|
||
|
||
|
||
def _create_service(service_name, organisation_type, email_from, form):
|
||
free_sms_fragment_limit = current_app.config[
|
||
'DEFAULT_FREE_SMS_FRAGMENT_LIMITS'
|
||
][
|
||
organisation_type
|
||
][
|
||
get_current_financial_year()
|
||
]
|
||
|
||
try:
|
||
service_id = service_api_client.create_service(
|
||
service_name=service_name,
|
||
organisation_type=organisation_type,
|
||
message_limit=current_app.config['DEFAULT_SERVICE_LIMIT'],
|
||
restricted=True,
|
||
user_id=session['user_id'],
|
||
email_from=email_from,
|
||
)
|
||
session['service_id'] = service_id
|
||
|
||
billing_api_client.create_or_update_free_sms_fragment_limit(service_id, free_sms_fragment_limit)
|
||
|
||
return service_id, None
|
||
except HTTPError as e:
|
||
if e.status_code == 400 and e.message['name']:
|
||
form.name.errors.append("This service name is already in use")
|
||
return None, e
|
||
else:
|
||
raise e
|
||
|
||
|
||
def _create_example_template(service_id):
|
||
example_sms_template = service_api_client.create_service_template(
|
||
'Example text message template',
|
||
'sms',
|
||
'Hey ((name)), I’m trying out Notify. Today is ((day of week)) and my favourite colour is ((colour)).',
|
||
service_id,
|
||
)
|
||
return example_sms_template
|
||
|
||
|
||
@main.route("/add-service", methods=['GET', 'POST'])
|
||
@user_is_logged_in
|
||
@user_is_gov_user
|
||
def add_service():
|
||
default_organisation_type = current_user.default_organisation_type
|
||
if default_organisation_type == 'nhs':
|
||
form = CreateNhsServiceForm()
|
||
default_organisation_type = None
|
||
else:
|
||
form = CreateServiceForm(
|
||
organisation_type=default_organisation_type
|
||
)
|
||
heading = 'About your service'
|
||
|
||
if form.validate_on_submit():
|
||
email_from = email_safe(form.name.data)
|
||
service_name = form.name.data
|
||
|
||
service_id, error = _create_service(
|
||
service_name,
|
||
default_organisation_type or form.organisation_type.data,
|
||
email_from,
|
||
form,
|
||
)
|
||
if error:
|
||
return render_template('views/add-service.html', form=form, heading=heading)
|
||
if len(service_api_client.get_active_services({'user_id': session['user_id']}).get('data', [])) > 1:
|
||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||
|
||
example_sms_template = _create_example_template(service_id)
|
||
|
||
return redirect(url_for(
|
||
'main.begin_tour',
|
||
service_id=service_id,
|
||
template_id=example_sms_template['data']['id']
|
||
))
|
||
else:
|
||
if default_organisation_type == 'local':
|
||
return render_template(
|
||
'views/add-service-local.html',
|
||
form=form,
|
||
heading=heading,
|
||
default_organisation_type=default_organisation_type,
|
||
)
|
||
|
||
return render_template(
|
||
'views/add-service.html',
|
||
form=form,
|
||
heading=heading,
|
||
default_organisation_type=default_organisation_type,
|
||
)
|