diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 2f1d1472f..b5a100435 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -224,26 +224,36 @@ 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, force=None): +def switch_service_permissions(service_id, permission, sms_sender=None): - permissions = current_service['permissions'].copy() + force_service_permission( + service_id, + permission, + on=permission not in current_service['permissions'], + sms_sender=sms_sender + ) - if force is None: - if permission in permissions: - permissions.remove(permission) - else: - permissions.append(permission) - else: - if force is True: - permissions.append(permission) - elif force is False and permission in permissions: - permissions.remove(permission) - current_service['permissions'] = list(set(permissions)) +def force_service_permission(service_id, permission, on=False, sms_sender=None): + + permissions, permission = set(current_service['permissions']), {permission} + + update_service_permissions( + service_id, + permissions | permission if on else permissions - permission, + sms_sender=sms_sender + ) + + +def update_service_permissions(service_id, permissions, sms_sender=None): + + current_service['permissions'] = list(permissions) + + data = {'permissions': current_service['permissions']} - data = {'permissions': permissions} if sms_sender: data['sms_sender'] = sms_sender + service_api_client.update_service_with_properties(service_id, data) @@ -442,10 +452,10 @@ def service_set_international_sms(service_id): enabled='on' if 'international_sms' in current_service['permissions'] else 'off' ) if form.validate_on_submit(): - switch_service_permissions( + force_service_permission( service_id, 'international_sms', - force=False if form.enabled.data == 'off' else True, + on=(form.enabled.data == 'on'), ) return redirect( url_for(".service_settings", service_id=service_id)