diff --git a/app/main/views/index.py b/app/main/views/index.py index 7e59a0347..16bb5debe 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -386,6 +386,14 @@ def upload_a_letter(): ) +@main.route('/using-notify/guidance/letter-specification') +def letter_specification(): + return render_template( + 'views/guidance/letter-specification.html', + navigation_links=using_notify_nav(), + ) + + # --- Redirects --- # @main.route('/roadmap', endpoint='old_roadmap') diff --git a/app/main/views/sub_navigation_dictionaries.py b/app/main/views/sub_navigation_dictionaries.py index 05c9954bb..1d30f6606 100644 --- a/app/main/views/sub_navigation_dictionaries.py +++ b/app/main/views/sub_navigation_dictionaries.py @@ -84,6 +84,10 @@ def using_notify_nav(): "name": "Upload a letter", "link": "main.upload_a_letter", }, + { + "name": "Letter specification", + "link": "main.letter_specification", + }, ] }, { diff --git a/app/navigation.py b/app/navigation.py index 98edb97d9..c535db16b 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -208,6 +208,7 @@ class HeaderNavigation(Navigation): 'edit_and_format_messages', 'send_files_by_email', 'upload_a_letter', + 'letter_specification', 'history', 'inbound_sms_admin', 'inbox', @@ -585,6 +586,7 @@ class MainNavigation(Navigation): 'edit_and_format_messages', 'send_files_by_email', 'upload_a_letter', + 'letter_specification', 'history', 'how_to_pay', 'inbound_sms_admin', @@ -840,6 +842,7 @@ class CaseworkNavigation(Navigation): 'edit_and_format_messages', 'send_files_by_email', 'upload_a_letter', + 'letter_specification', 'history', 'how_to_pay', 'inbound_sms_admin', @@ -1153,6 +1156,7 @@ class OrgNavigation(Navigation): 'edit_and_format_messages', 'send_files_by_email', 'upload_a_letter', + 'letter_specification', 'history', 'how_to_pay', 'inbound_sms_admin', diff --git a/app/templates/views/guidance/letter-specification.html b/app/templates/views/guidance/letter-specification.html new file mode 100644 index 000000000..18105d969 --- /dev/null +++ b/app/templates/views/guidance/letter-specification.html @@ -0,0 +1,57 @@ +{% extends "content_template.html" %} +{% from "components/service-link.html" import service_link %} + +{% block per_page_title %} + Letter specification +{% endblock %} + +{% block content_column_content %} + +

Letter specification

+ +

Page size and layout: A4 portrait (210 × 297 mm)

+

Maximum file size: 2 MB

+

Your letter must 10 pages or less (5 double-sided sheets of paper).

+

The content of your letter must appear inside the printable area.

+ +

To help you set up your letter, you can download our letter specification as a PDF.

+ +
+ + + See a text version of the letter specification + + +
+

Page 1 of 10

+ +

Left margin 15mm

+

Right margin 15mm

+

Top margin 5mm

+

Bottom margin 5mm

+ +

Logo block

+ +

Position: 15mm from left edge, 5mm from top edge

+

Size: 200mm wide by 25mm high

+ +

Address block

+ +

Position: 39.5mm from left edge, 24.6mm from top edge

+

Size: 95.4mm wide by 26.8mm high

+ +

Letter contact block

+ +

Position: 125mm from left edge, 30mm from top edge

+

Size: 65mm wide by 65mm high

+ +

Pages 2 to 10

+ +

Left margin 15mm

+

Right margin 15mm

+

Top margin 5mm

+

Bottom margin 5mm

+
+
+ +{% endblock %} diff --git a/app/templates/views/guidance/upload-a-letter.html b/app/templates/views/guidance/upload-a-letter.html index c68a8842b..154d68e39 100644 --- a/app/templates/views/guidance/upload-a-letter.html +++ b/app/templates/views/guidance/upload-a-letter.html @@ -20,19 +20,6 @@
  • Select Choose file.
  • -

    Your file must meet our letter specification

    - -

    The content of your letter must appear inside the printable area.

    - -

    Your file must be:

    - - - -

    To help you set up your letter, you can download our letter specification document (PDF).

    +

    Your file must meet our letter specification.

    {% endblock %} diff --git a/app/templates/views/uploads/choose-file.html b/app/templates/views/uploads/choose-file.html index a27e50685..a9b863601 100644 --- a/app/templates/views/uploads/choose-file.html +++ b/app/templates/views/uploads/choose-file.html @@ -35,20 +35,7 @@ )}}

    -

    Your file must meet our letter specification

    - -

    The content of your letter must appear inside the printable area.

    - -

    Your file must be:

    - - - -

    To help you set up your letter, you can download our letter specification document (PDF).

    +

    Your file must meet our letter specification.

    {% endblock %} diff --git a/app/utils.py b/app/utils.py index e7a979cb1..850fa66fd 100644 --- a/app/utils.py +++ b/app/utils.py @@ -631,7 +631,7 @@ LETTER_VALIDATION_MESSAGES = { 'summary': ( 'Validation failed because {invalid_pages} {invalid_pages_are_or_is} not A4 portrait size.
    ' 'Files must meet our ' - '' + '' 'letter specification' '.' ), @@ -641,14 +641,14 @@ LETTER_VALIDATION_MESSAGES = { 'detail': ( 'You need to edit {invalid_pages}.
    ' 'Files must meet our ' - '' + '' 'letter specification' '.' ), 'summary': ( 'Validation failed because content is outside the printable area on {invalid_pages}.
    ' 'Files must meet our ' - '' + '' 'letter specification' '.' ), @@ -690,7 +690,7 @@ LETTER_VALIDATION_MESSAGES = { 'summary': ( 'Validation failed because the address block is empty.
    ' 'Files must meet our ' - '' + '' 'letter specification' '.' ), @@ -792,13 +792,13 @@ def get_letter_validation_error(validation_message, invalid_pages=None, page_cou invalid_pages=invalid_pages, invalid_pages_are_or_is=invalid_pages_are_or_is, page_count=page_count, - letter_spec_guidance=url_for('.upload_a_letter') + letter_spec_guidance=url_for('.letter_specification') ), 'summary': LETTER_VALIDATION_MESSAGES[validation_message]['summary'].format( invalid_pages=invalid_pages, invalid_pages_are_or_is=invalid_pages_are_or_is, page_count=page_count, - letter_spec=url_for('.letter_spec'), + letter_spec_guidance=url_for('.letter_specification'), ), } diff --git a/tests/app/test_utils.py b/tests/app/test_utils.py index fe33a68a8..7f7eb7671 100644 --- a/tests/app/test_utils.py +++ b/tests/app/test_utils.py @@ -587,13 +587,11 @@ def test_get_letter_validation_error_for_known_errors( assert detail.text == expected_content if detail.select_one('a'): - assert detail.select_one('a')['href'] == url_for('.upload_a_letter') - assert detail.select_one('a')['target'] == '_blank' + assert detail.select_one('a')['href'] == url_for('.letter_specification') assert summary.text == expected_summary if summary.select_one('a'): - assert summary.select_one('a')['href'] == url_for('.letter_spec') - assert summary.select_one('a')['target'] == '_blank' + assert summary.select_one('a')['href'] == url_for('.letter_specification') @pytest.mark.parametrize("date_from_db, expected_result", [