Merge branch 'master' into reinstate-new-rate-api

Conflicts:
	app/main/views/dashboard.py
This commit is contained in:
Martyn Inglis
2017-06-07 14:44:27 +01:00
44 changed files with 1079 additions and 186 deletions

View File

@@ -31,22 +31,25 @@
failure_percentage,
danger_zone=False,
failure_link=None,
link=None
link=None,
show_failures=True
) %}
<div class="big-number-with-status">
{{ big_number(number, label, link=link) }}
<div class="big-number-status{% if danger_zone %}-failing{% endif %}">
{% if failures %}
{% if failure_link %}
<a href="{{ failure_link }}">
{% if show_failures %}
<div class="big-number-status{% if danger_zone %}-failing{% endif %}">
{% if failures %}
{% if failure_link %}
<a href="{{ failure_link }}">
{{ "{:,}".format(failures) }} failed {{ failure_percentage }}%
</a>
{% else %}
{{ "{:,}".format(failures) }} failed {{ failure_percentage }}%
</a>
{% endif %}
{% else %}
{{ "{:,}".format(failures) }} failed {{ failure_percentage }}%
No failures
{% endif %}
{% else %}
No failures
{% endif %}
</div>
</div>
{% endif %}
</div>
{% endmacro %}

View File

@@ -73,9 +73,9 @@
</th>
{%- endmacro %}
{% macro index_field(text) -%}
{% macro index_field(text=None) -%}
<td class="table-field-index">
<span>{{ text }}</span>
{{ text if text != None else caller() }}
</td>
{%- endmacro %}

View File

@@ -21,7 +21,10 @@
{{ item.to }}
</p>
<p class="hint">
{% if item.job %}
{% if item.job and item.job.original_file_name == 'Report' %}
<a href="{{ url_for('.view_template_version', service_id=current_service.id, template_id=item.template.id, version=item.template_version) }}">{{ item.template.name }}</a>
sent to one recipient
{% elif item.job %}
From <a href="{{ url_for(".view_job", service_id=current_service.id, job_id=item.job.id) }}">{{ item.job.original_file_name }}</a>
{% else %}
<a href="{{ url_for('.view_template_version', service_id=current_service.id, template_id=item.template.id, version=item.template_version) }}">{{ item.template.name }}</a>

View File

@@ -150,7 +150,9 @@
{% endif %}
{{ template|string }}
{% if not errors %}
{{ template|string }}
{% endif %}
<div class="bottom-gutter-3-2">
{% if errors %}
@@ -188,14 +190,18 @@
caption=original_file_name,
caption_visible=False,
field_headings=[
'<span class="visually-hidden">Row in file</span><span aria-hidden="true">1</span>'|safe
'<span class="visually-hidden">Row in file</span><span aria-hidden="true" class="{}">1</span>'.format("table-field-invisible-error" if errors else "")|safe
] + recipients.column_headers
) %}
{{ index_field(item.index + 2) }}
{% call index_field() %}
<span class="{% if item.index in recipients.rows_with_errors %}table-field-error{% endif %}">
{{ item.index + 2 }}
</span>
{% endcall %}
{% for column in recipients.column_headers %}
{% if item['columns'][column].error and not recipients.missing_column_headers %}
{% call field() %}
<span class="table-field-error">
<span>
<span class="table-field-error-label">{{ item['columns'][column].error }}</span>
{{ item['columns'][column].data if item['columns'][column].data != None }}
</span>
@@ -234,4 +240,9 @@
</p>
{% endif %}
{% if errors %}
<h2 class="heading-medium">Preview of {{ template.name }}</h2>
{{ template|string }}
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,21 @@
{% from "components/big-number.html" import big_number, big_number_with_status %}
<div class="ajax-block">
{% if inbound_sms_summary != None %}
<div class="big-number-meta-wrapper">
{{
big_number_with_status(
inbound_sms_summary.count,
'text messages received',
link=url_for('.inbox', service_id=current_service.id),
show_failures=False
)
}}
<div class="big-number-meta">
{% if inbound_sms_summary.most_recent %}
latest message {{ inbound_sms_summary.most_recent | format_delta }}
{% endif %}
</div>
</div>
{% endif %}
</div>

View File

@@ -6,7 +6,7 @@
<div id="total-email" class="column-half">
{{ big_number_with_status(
statistics['email']['requested'],
message_count_label(statistics['email']['requested'], 'email', suffix=''),
message_count_label(statistics['email']['requested'], 'email', suffix='sent'),
statistics['email']['failed'],
statistics['email']['failed_percentage'],
statistics['email']['show_warning'],
@@ -17,7 +17,7 @@
<div id="total-sms" class="column-half">
{{ big_number_with_status(
statistics['sms']['requested'],
message_count_label(statistics['sms']['requested'], 'sms', suffix=''),
message_count_label(statistics['sms']['requested'], 'sms', suffix='sent'),
statistics['sms']['failed'],
statistics['sms']['failed_percentage'],
statistics['sms']['show_warning'],

View File

@@ -29,6 +29,8 @@
In the last 7 days
</h2>
{{ ajax_block(partials, updates_url, 'inbox') }}
{{ ajax_block(partials, updates_url, 'totals') }}
{{ show_more(
url_for('.monthly', service_id=current_service.id),

View File

@@ -0,0 +1,43 @@
{% from "components/table.html" import list_table, field, hidden_field_heading, right_aligned_field_heading, row_heading %}
{% from "components/message-count-label.html" import message_count_label %}
{% extends "withnav_template.html" %}
{% block service_page_title %}
Inbox
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">
Received text messages
</h1>
<div>
{% call(item, row_number) list_table(
messages,
caption="Inbox",
caption_visible=False,
empty_message='When users text your services phone number ({}) youll see the messages here'.format(current_service.sms_sender),
field_headings=[
'From',
'First two lines of message'
],
field_headings_visible=False
) %}
{% call field() %}
<span class="file-list-filename" href="#">{{ item.user_number }}</span>
<span class="wide-left-hand-column">{{ item.content }}</span>
{% endcall %}
{% call field(align='right') %}
<span class="file-list-hint align-with-message-body">
{{ item.created_at | format_delta }}
</span>
{% endcall %}
{% endcall %}
{% if messages %}
<p class="table-show-more-link">
Showing all {{ messages | length }} messages
</p>
{% endif %}
</div>
{% endblock %}

View File

@@ -1,6 +1,8 @@
{% extends "withnav_template.html" %}
{% from "components/ajax-block.html" import ajax_block %}
{% from "components/message-count-label.html" import message_count_label, recipient_count_label %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/textbox.html" import textbox %}
{% block service_page_title %}
{{ message_count_label(99, message_type, suffix='') | capitalize }}
@@ -18,9 +20,27 @@
'counts'
) }}
<form
method="get"
action="{{ url_for('.view_notifications', service_id=current_service.id, message_type=message_type) }}"
class="grid-row"
>
<div class="column-three-quarters">
<input type="hidden" name="status" value="{{ status }}">
{{ textbox(
search_form.to,
width='1-1',
label='Search by {}'.format('email address' if message_type == 'email' else 'phone number')
) }}
</div>
<div class="column-one-quarter align-button-with-textbox">
<input type="submit" class="button" value="Search">
</div>
</form>
{{ ajax_block(
partials,
url_for('.get_notifications_as_json', service_id=current_service.id, message_type=message_type, status=status, page=page),
url_for('.get_notifications_as_json', service_id=current_service.id, message_type=message_type, status=status, page=page, to=to),
'notifications'
) }}

View File

@@ -5,32 +5,30 @@
{% from "components/table.html" import list_table, field, text_field, index_field, index_field_heading %}
{% block service_page_title %}
{% if request.args['help'] %}
Example text message
{% else %}
Send yourself a test
{% endif %}
{{ page_title }}
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">
{% if request.args['help'] %}
Example text message
{% else %}
{% if template.template_type == 'letter' %}
Print a test letter
{% else %}
Send yourself a test
{% endif %}
{% endif %}
{{ page_title }}
</h1>
<form method="post" class="js-stick-at-top-when-scrolling" data-module="autofocus">
{{ textbox(
form.placeholder_value,
hint='Optional' if optional_placeholder else None
) }}
<div class="grid-row">
<div class="column-two-thirds">
{{ textbox(
form.placeholder_value,
hint='Optional' if optional_placeholder else None,
width='1-1',
) }}
</div>
{% if skip_link %}
<div class="column-one-third">
<a href="{{ skip_link[1] }}" class="top-gutter-4-3">{{ skip_link[0] }}</a>
</div>
{% endif %}
</div>
{{ page_footer('Next', back_link=back_link) }}
</form>

View File

@@ -36,8 +36,13 @@
{% call row() %}
{{ text_field('Text message sender') }}
{{ text_field(current_service.sms_sender or 'GOVUK') }}
{{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id)) }}
{{ text_field(current_service.sms_sender) }}
{% if current_user.has_permissions([], admin_override=True) or not can_receive_inbound %}
{{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id, set_inbound_sms=False)) }}
{% else %}
{{ text_field('') }}
{% endif %}
{% endcall %}
{% call row() %}
@@ -56,7 +61,7 @@
{% call row() %}
{{ text_field('Letter contact details') }}
{% call field(status='' if current_service.letter_contact_block else 'default') %}
{{ current_service.letter_contact_block | escape | nl2br | safe }}
{{ letter_contact_block | string | nl2br | safe if current_service.letter_contact_block else 'None'}}
{% endcall %}
{{ edit_field('Change', url_for('.service_set_letter_contact_block', service_id=current_service.id)) }}
{% endcall %}
@@ -162,6 +167,11 @@
</a>
</li>
{% endif %}
<li class="bottom-gutter">
<a href="{{ url_for('.service_set_sms_sender', service_id=current_service.id, set_inbound_sms=True) }}" class="button">
{{ 'Stop inbound sms' if can_receive_inbound else 'Allow inbound sms' }}
</a>
</li>
</ul>
{% endif %}

View File

@@ -18,7 +18,8 @@
label='How should users contact your service?<br>This applies to all the letters you send.'|safe,
hint='10 lines maximum',
width='1-1',
rows=10
rows=10,
highlight_tags=True
) }}
{{ page_footer(
'Save',

View File

@@ -117,7 +117,7 @@
<div class="grid-row bottom-gutter">
<div class="column-half">
<h3 class="visually-hidden">Services</h3>
<div class="product-page-big-number">51</div>
<div class="product-page-big-number">54</div>
services
</div>
<div class="column-half">

View File

@@ -13,8 +13,8 @@
</a>
</div>
<div class="{{ 'column-half' if template.template_type == 'letter' else 'column-third' }}">
<a href="{{ url_for(".send_test", service_id=current_service.id, template_id=template.id) }}" class="pill-separate-item">
{{ 'Print a test letter' if template.template_type == 'letter' else 'Send yourself a test' }}
<a href="{{ url_for(".send_one_off", service_id=current_service.id, template_id=template.id) }}" class="pill-separate-item">
{{ 'Print a test letter' if template.template_type == 'letter' else 'Send to one recipient' }}
</a>
</div>
{% endif %}