Refactored code for new service permissions

This commit is contained in:
Ken Tsang
2017-06-23 13:35:08 +01:00
parent f8a3132d8b
commit bcc45ede9c
14 changed files with 74 additions and 66 deletions

View File

@@ -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'):

View File

@@ -208,14 +208,24 @@ def service_switch_research_mode(service_id):
return redirect(url_for('.service_settings', service_id=service_id))
def switch_service_permissions(service_id, permission):
permissions = current_service['permissions'].copy()
if permission in permissions:
permissions.remove(permission)
else:
permissions.append(permission)
service_api_client.update_service_with_properties(
service_id,
{'permissions': permissions}
)
@main.route("/services/<service_id>/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 +233,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))
@@ -350,7 +357,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'])

View File

@@ -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']
)

View File

@@ -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',

View File

@@ -2,7 +2,7 @@
<nav>
<a class="pill-separate-item" href="{{ url_for('.choose_template', service_id=current_service.id) }}">
{% if current_service.can_send_letters %}
{% if 'letter' in current_service.permissions %}
Write an email, text message or letter
{% else %}
Write an email or text message

View File

@@ -47,7 +47,7 @@
{% call row() %}
{{ text_field('International text messages') }}
{{ boolean_field(current_service.can_send_international_sms) }}
{{ boolean_field('international_sms' in current_service.permissions) }}
{{ edit_field('Change', url_for('.service_set_international_sms', service_id=current_service.id)) }}
{% endcall %}
@@ -70,11 +70,11 @@
{% call row() %}
{{ text_field('Letters') }}
{{ boolean_field(current_service.can_send_letters) }}
{{ boolean_field('letter' in current_service.permissions) }}
{{ edit_field('Change', url_for('.service_set_letters', service_id=current_service.id)) }}
{% endcall %}
{% if current_service.can_send_letters %}
{% if 'letter' in current_service.permissions %}
{% call row() %}
{{ text_field('Letter contact details') }}
{% call field(status='' if current_service.letter_contact_block else 'default') %}
@@ -158,12 +158,12 @@
</li>
<li class="bottom-gutter">
<a href="{{ url_for('.service_switch_can_send_letters', service_id=current_service.id) }}" class="button">
{{ 'Stop sending letters' if current_service.can_send_letters else 'Allow to send letters' }}
{{ 'Stop sending letters' if 'letter' in current_service.permissions else 'Allow to send letters' }}
</a>
</li>
<li class="bottom-gutter">
<a href="{{ url_for('.service_switch_can_send_international_sms', service_id=current_service.id) }}" class="button">
{{ 'Stop sending international sms' if current_service.can_send_international_sms else 'Allow to send international sms' }}
{{ 'Stop sending international sms' if 'international_sms' in current_service.permissions else 'Allow international sms' }}
</a>
</li>
{% if current_service.active %}

View File

@@ -11,7 +11,7 @@
<div class="grid-row">
<div class="column-five-sixths">
<h1 class="heading-large">International text messages</h1>
{% if current_service.can_send_international_sms %}
{% if 'international_sms' in current_service.permissions %}
<p>
Your service can send text messages to international phone numbers.
</p>

View File

@@ -11,7 +11,7 @@
<div class="grid-row">
<div class="column-five-sixths">
<h1 class="heading-large">Letters</h1>
{% if current_service.can_send_letters %}
{% if 'letter' in current_service.permissions %}
<p>
Your service can send letters.
</p>

View File

@@ -17,7 +17,7 @@
{% if current_user.has_permissions(permissions=['manage_templates'], any_=True) %}
<p class="bottom-gutter">
You need a template before you can send
{% if current_service.can_send_letters %}
{% if 'letter' in current_service.permissions %}
emails, text messages or letters
{%- else -%}
emails or text messages
@@ -27,7 +27,7 @@
{% else %}
<p>
You need to ask your service manager to add templates before you can send
{% if current_service.can_send_letters %}
{% if 'letter' in current_service.permissions %}
emails, text messages or letters
{%- else -%}
emails or text messages