diff --git a/app/main/views/send.py b/app/main/views/send.py index de6be4ff1..0e4d7edc7 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -245,7 +245,7 @@ def send_test_step(service_id, template_id, step_index): current_placeholder, dict_to_populate_from=get_normalised_send_test_values_from_session(), optional_placeholder=optional_placeholder, - allow_international_phone_numbers=current_service['can_send_international_sms'], + allow_international_phone_numbers='international_sms' in current_service['permissions'], ) if form.validate_on_submit(): @@ -375,7 +375,7 @@ def _check_messages(service_id, template_type, upload_id, letters_as_pdf=False): [user.name, user.mobile_number, user.email_address] for user in users ) if current_service['restricted'] else None, remaining_messages=remaining_messages, - international_sms=current_service['can_send_international_sms'], + international_sms='international_sms' in current_service['permissions'], ) if request.args.get('from_test'): diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 85e02c12c..a0e17b4b4 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -208,14 +208,26 @@ def service_switch_research_mode(service_id): return redirect(url_for('.service_settings', service_id=service_id)) +def switch_service_permissions(service_id, permission, sms_sender=None): + permissions = current_service['permissions'].copy() + if permission in permissions: + permissions.remove(permission) + else: + permissions.append(permission) + current_service['permissions'] = permissions + + data = {'permissions': permissions} + if sms_sender: + data['sms_sender'] = sms_sender + + service_api_client.update_service_with_properties(service_id, data) + + @main.route("/services//service-settings/can-send-letters") @login_required @user_has_permissions(admin_override=True) def service_switch_can_send_letters(service_id): - service_api_client.update_service_with_properties( - service_id, - {"can_send_letters": not current_service['can_send_letters']} - ) + switch_service_permissions(service_id, 'letter') return redirect(url_for('.service_settings', service_id=service_id)) @@ -223,10 +235,7 @@ def service_switch_can_send_letters(service_id): @login_required @user_has_permissions(admin_override=True) def service_switch_can_send_international_sms(service_id): - service_api_client.update_service_with_properties( - service_id, - {"can_send_international_sms": not current_service['can_send_international_sms']} - ) + switch_service_permissions(service_id, 'international_sms') return redirect(url_for('.service_settings', service_id=service_id)) @@ -295,16 +304,7 @@ def service_set_sms_sender(service_id): if form.validate_on_submit(): set_inbound_sms = request.args.get('set_inbound_sms', False) if set_inbound_sms == 'True': - permissions = current_service['permissions'] - if 'inbound_sms' in permissions: - permissions.remove('inbound_sms') - else: - permissions.append('inbound_sms') - service_api_client.update_service_with_properties( - current_service['id'], - {'permissions': permissions, - 'sms_sender': form.sms_sender.data or None} - ) + switch_service_permissions(current_service['id'], 'inbound_sms', form.sms_sender.data) else: service_api_client.update_service( current_service['id'], @@ -350,7 +350,7 @@ def service_set_letters(service_id): @user_has_permissions('manage_settings', admin_override=True) def service_set_letter_contact_block(service_id): - if not current_service['can_send_letters']: + if 'letter' not in current_service['permissions']: abort(403) form = ServiceLetterContactBlock(letter_contact_block=current_service['letter_contact_block']) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index a9e74658f..16ffad266 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -98,7 +98,7 @@ def choose_template(service_id, template_type='all'): ('All', 'all'), ('Text message', 'sms'), ('Email', 'email'), - ('Letter', 'letter') if current_service['can_send_letters'] else None, + ('Letter', 'letter') if 'letter' in current_service['permissions'] else None, ]) ] @@ -184,7 +184,7 @@ def view_template_version_preview(service_id, template_id, version, filetype): def add_template_by_type(service_id): form = ChooseTemplateType( - include_letters=current_service['can_send_letters'] + include_letters='letter' in current_service['permissions'] ) if form.validate_on_submit(): @@ -220,7 +220,7 @@ def add_service_template(service_id, template_type): if template_type not in ['sms', 'email', 'letter']: abort(404) - if not current_service['can_send_letters'] and template_type == 'letter': + if 'letter' not in current_service['permissions'] and template_type == 'letter': abort(403) form = form_objects[template_type]() @@ -448,5 +448,5 @@ def get_human_readable_delta(from_time, until_time): def should_show_template(template_type): return ( template_type != 'letter' or - current_service['can_send_letters'] + 'letter' in current_service['permissions'] ) diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index 73b324924..30511b27b 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -88,8 +88,6 @@ class ServiceAPIClient(NotifyAdminAPIClient): 'email_from', 'reply_to_email_address', 'research_mode', - 'can_send_letters', - 'can_send_international_sms', 'sms_sender', 'created_by', 'branding', diff --git a/app/templates/views/dashboard/write-first-messages.html b/app/templates/views/dashboard/write-first-messages.html index 5cf6ae03d..6e2fccd1d 100644 --- a/app/templates/views/dashboard/write-first-messages.html +++ b/app/templates/views/dashboard/write-first-messages.html @@ -2,7 +2,7 @@