Show broadcasts created by the API

Broadcasts created by the API are different in that:
- they aren’t created by any user, so don’t have a `created_by_id`
- they are created instantly, not in steps, so don’t have an
  `updated_at` time

This commit alters the views to account for when these pieces of
information aren’t present.
This commit is contained in:
Chris Hill-Scott
2021-01-27 11:24:22 +00:00
parent 60aa2d2b42
commit 5ae53b625b
4 changed files with 95 additions and 15 deletions

View File

@@ -45,6 +45,10 @@ class BroadcastMessage(JSONModel):
return True
if not self.starts_at and other.starts_at:
return False
if self.updated_at and not other.updated_at:
return self.updated_at < other.created_at
if not self.updated_at and other.updated_at:
return self.created_at < other.updated_at
return self.updated_at < other.updated_at
@classmethod
@@ -129,7 +133,7 @@ class BroadcastMessage(JSONModel):
@cached_property
def created_by(self):
return User.from_id(self.created_by_id)
return User.from_id(self.created_by_id) if self.created_by_id else None
@cached_property
def approved_by(self):

View File

@@ -20,7 +20,9 @@
alert
</li>
<li class="area-list-key area-list-key--phone-estimate">
{% if broadcast_message.count_of_phones == broadcast_message.count_of_phones_likely %}
{% if broadcast_message.count_of_phones == 0 %}
Unknown number of phones
{% elif broadcast_message.count_of_phones == broadcast_message.count_of_phones_likely %}
{{ broadcast_message.count_of_phones|format_thousands }} phones estimated
{% else %}
{{ broadcast_message.count_of_phones|format_thousands }} to {{ broadcast_message.count_of_phones_likely|format_thousands }} phones

View File

@@ -19,10 +19,15 @@
{% block service_page_title %}
{% if broadcast_message.status == 'pending-approval' %}
{% if broadcast_message.created_by == current_user and current_user.has_permissions('send_messages') %}
{% if broadcast_message.created_by and broadcast_message.created_by == current_user and current_user.has_permissions('send_messages') %}
{{ broadcast_message.template.name }} is waiting for approval
{% elif current_user.has_permissions('send_messages') %}
{{ broadcast_message.created_by.name }} wants to broadcast
{% if broadcast_message.created_by %}
{{ broadcast_message.created_by.name }}
{% else %}
An API call
{% endif %}
wants to broadcast
{{ broadcast_message.template.name }}
{% else %}
This alert is waiting for approval
@@ -37,7 +42,7 @@
{{ govukBackLink({ "href": back_link }) }}
{% if broadcast_message.status == 'pending-approval' %}
{% if broadcast_message.created_by == current_user and current_user.has_permissions('send_messages') %}
{% if broadcast_message.created_by and broadcast_message.created_by == current_user and current_user.has_permissions('send_messages') %}
<div class="banner govuk-!-margin-bottom-6">
<h1 class="govuk-heading-m govuk-!-margin-bottom-3">
{{ broadcast_message.template.name }} is waiting for approval
@@ -79,7 +84,12 @@
{% elif current_user.has_permissions('send_messages') %}
{% call form_wrapper(class="banner govuk-!-margin-bottom-6") %}
<h1 class="govuk-heading-m govuk-!-margin-top-0 govuk-!-margin-bottom-3">
{{ broadcast_message.created_by.name }} wants to broadcast
{% if broadcast_message.created_by %}
{{ broadcast_message.created_by.name }}
{% else %}
An API call
{% endif %}
wants to broadcast
{{ broadcast_message.template.name }}
</h1>
{{ page_footer(
@@ -138,8 +148,12 @@
{% if broadcast_message.status != 'pending-approval' %}
<p class="govuk-body govuk-!-margin-bottom-3">
Prepared by {{ broadcast_message.created_by.name }} and approved by
{{ broadcast_message.approved_by.name }}.
{% if broadcast_message.created_by %}
Prepared by {{ broadcast_message.created_by.name }}
{% else %}
Created from an API call
{% endif %}
and approved by {{ broadcast_message.approved_by.name }}.
</p>
{% endif %}