Add filter for formatting a number as currency

This is used on the usage page, but is likely to become useful in other
places now that letter rates can be greater than £1.
This commit is contained in:
Katie Smith
2020-07-14 14:45:37 +01:00
parent 355e981028
commit 756a17f8db
4 changed files with 30 additions and 10 deletions

View File

@@ -521,6 +521,13 @@ def nl2br(value):
return ''
def format_number_in_pounds_as_currency(number):
if number >= 1:
return f"£{number:,.2f}"
return f"{number * 100:.0f}p"
@login_manager.user_loader
def load_user(user_id):
return User.from_id(user_id)
@@ -798,6 +805,7 @@ def add_template_filters(application):
format_notification_status_as_time,
format_notification_status_as_field_status,
format_notification_status_as_url,
format_number_in_pounds_as_currency,
formatters.formatted_list,
nl2br,
format_phone_number_human_readable,

View File

@@ -456,7 +456,7 @@ def format_letter_details_for_month(letter_units_for_month):
letter_details = LetterDetails(
billing_units=sum(x['billing_units'] for x in rate_group),
rate=format_letter_rate(rate_group[0]['rate']),
rate=rate_group[0]['rate'],
cost=(sum(x['billing_units'] for x in rate_group) * rate_group[0]['rate']),
postage_description=rate_group[0]['postage']
)
@@ -472,13 +472,6 @@ def get_postage_description(postage):
return 'international'
def format_letter_rate(number):
if number >= 1:
return f"£{number:,.2f}"
return f"{number * 100:.0f}p"
def get_free_paid_breakdown_for_month(
free_sms_fragment_limit,
cumulative,

View File

@@ -110,7 +110,7 @@
{% for letter in month.letters%}
{% if letter.billing_units %}
<li class="tabular-numbers">{{ "{:,} {}".format(letter.billing_units, letter.postage_description) }} {{ message_count_label(letter.billing_units, 'letter', '') }}at
{{ letter.rate }}</li>
{{ letter.rate | format_number_in_pounds_as_currency }}</li>
{% endif %}
{% endfor %}
{% if not (month.free or month.paid or month.letters) %}