Add Jinja macro for a row on the settings page

Often we show/hide these rows based on what permissions a service has.
This commits refactors that check into a reusable macro, rather than
having to write the same `if` statements all the time.
This commit is contained in:
Chris Hill-Scott
2018-07-09 16:58:04 +01:00
parent c30b86714e
commit a35ce8eb89
2 changed files with 105 additions and 108 deletions

View File

@@ -56,6 +56,15 @@
</tbody>
{%- endmacro %}
{% macro settings_row(if_has_permission='') -%}
{% set parent_caller = caller %}
{% if if_has_permission in current_service.permissions %}
{% call row() %}
{{ parent_caller() }}
{% endcall %}
{% endif %}
{%- endmacro %}
{% macro field(align='left', status='', border=True) -%}
{% set field_alignment = 'table-field-right-aligned' if align == 'right' else 'table-field-center-aligned' %}

View File

@@ -1,6 +1,6 @@
{% extends "withnav_template.html" %}
{% from "components/banner.html" import banner_wrapper %}
{% from "components/table.html" import mapping_table, row, text_field, optional_text_field, edit_field, field, boolean_field with context %}
{% from "components/table.html" import mapping_table, row, settings_row, text_field, optional_text_field, edit_field, field, boolean_field with context %}
{% block service_page_title %}
Settings
@@ -46,8 +46,7 @@
}}
{% endcall %}
{% if 'upload_document' in current_service.permissions %}
{% call row() %}
{% call settings_row(if_has_permission='upload_document') %}
{{ text_field('Contact link') }}
{{ text_field(current_service.contact_link, truncate=true) }}
{{ edit_field(
@@ -58,7 +57,6 @@
)
}}
{% endcall %}
{% endif %}
{% endcall %}
@@ -81,40 +79,36 @@
}}
{% endcall %}
{% if 'email' in current_service.permissions %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Email reply to addresses') }}
{% call field(status='default' if default_reply_to_email_address == "Not set" else '') %}
{% call row() %}
{{ text_field('Email reply to addresses') }}
{% call field(status='default' if default_reply_to_email_address == "Not set" else '') %}
{{ default_reply_to_email_address }}
{% if reply_to_email_address_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(reply_to_email_address_count - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if reply_to_email_address_count else 'Change',
url_for('.service_email_reply_to',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{{ default_reply_to_email_address }}
{% if reply_to_email_address_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(reply_to_email_address_count - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if reply_to_email_address_count else 'Change',
url_for('.service_email_reply_to',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Email branding') }}
{{ text_field(
'GOV.UK' if current_service.branding == 'govuk' else 'Your branding'
) }}
{{ edit_field(
'Change',
url_for('.branding_request', service_id=current_service.id),
)}}
{% endcall %}
{% endif %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Email branding') }}
{{ text_field(
'GOV.UK' if current_service.branding == 'govuk' else 'Your branding'
) }}
{{ edit_field(
'Change',
url_for('.branding_request', service_id=current_service.id),
)}}
{% endcall %}
{% endcall %}
@@ -137,64 +131,60 @@
}}
{% endcall %}
{% if 'sms' in current_service.permissions %}
{% call row() %}
{{ text_field('Text message sender') }}
{% call field(status='default' if default_sms_sender == "None" else '') %}
{{ default_sms_sender | string | nl2br | safe if default_sms_sender else 'None'}}
{% if sms_sender_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(sms_sender_count - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if sms_sender_count else 'Change',
url_for('.service_sms_senders',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text message sender') }}
{% call field(status='default' if default_sms_sender == "None" else '') %}
{{ default_sms_sender | string | nl2br | safe if default_sms_sender else 'None'}}
{% if sms_sender_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(sms_sender_count - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if sms_sender_count else 'Change',
url_for('.service_sms_senders',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Text messages start with service name') }}
{{ boolean_field(prefix_sms) }}
{{ edit_field(
'Change',
url_for('.service_set_sms_prefix',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text messages start with service name') }}
{{ boolean_field(prefix_sms) }}
{{ edit_field(
'Change',
url_for('.service_set_sms_prefix',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% call row() %}
{{ text_field('International text messages') }}
{{ boolean_field('international_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_international_sms',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('International text messages') }}
{{ boolean_field('international_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_international_sms',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Receive text messages') }}
{{ boolean_field('inbound_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_inbound_sms',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% endif %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Receive text messages') }}
{{ boolean_field('inbound_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_inbound_sms',
service_id=current_service.id),
permissions=['manage_service']
)
}}
{% endcall %}
{% endcall %}
@@ -217,26 +207,24 @@
}}
{% endcall %}
{% if 'letter' in current_service.permissions %}
{% call row() %}
{{ text_field('Sender addresses') }}
{% call field(status='default' if default_letter_contact_block == "Not set" else '') %}
{{ default_letter_contact_block | string | nl2br | safe if default_letter_contact_block else 'Not set'}}
{% if letter_contact_details_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(letter_contact_details_count - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if letter_contact_details_count else 'Change',
url_for('.service_letter_contact_details',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Sender addresses') }}
{% call field(status='default' if default_letter_contact_block == "Not set" else '') %}
{{ default_letter_contact_block | string | nl2br | safe if default_letter_contact_block else 'Not set'}}
{% if letter_contact_details_count > 1 %}
<div class="hint">
{{ '…and %d more' | format(letter_contact_details_count - 1) }}
</div>
{% endif %}
{% endcall %}
{% endif %}
{{ edit_field(
'Manage' if letter_contact_details_count else 'Change',
url_for('.service_letter_contact_details',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
)
}}
{% endcall %}
{% endcall %}
</div>