Skip to content

Commit 7522900

Browse files
authored
Merge pull request #1116 from alphagov/2097-csv-closing-the-case
2097: Rename detailed Closing the case page to Recommendation; Add CSV Closing the case page
2 parents 3c6a541 + c2926a6 commit 7522900

19 files changed

Lines changed: 533 additions & 192 deletions

File tree

accessibility_monitoring_platform/apps/cases/csv_export.py

Lines changed: 51 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,26 @@
88
from django.urls import reverse
99

1010
from ..audits.models import Audit
11-
from ..common.csv_export import CSVColumn, EqualityBodyCSVColumn, format_model_field
11+
from ..common.csv_export import (
12+
CSVColumn,
13+
EqualityBodyCSVColumn,
14+
ExportableClasses,
15+
format_model_field,
16+
)
1217
from ..detailed.models import Contact as DetailedContact
1318
from ..detailed.models import DetailedCase
1419
from ..reports.models import Report
15-
from ..simplified.csv_export import (
16-
CONTACT_DETAILS_COLUMN_HEADER,
17-
SIMPLIFIED_EQUALITY_BODY_COLUMNS_FOR_EXPORT,
18-
format_simplified_contacts,
19-
)
20+
from ..simplified.csv_export import SIMPLIFIED_EQUALITY_BODY_COLUMNS_FOR_EXPORT
2021
from ..simplified.models import CaseCompliance, CaseStatus
2122
from ..simplified.models import Contact as SimplifiedContact
2223
from ..simplified.models import SimplifiedCase
2324

2425
DOWNLOAD_CASES_CHUNK_SIZE: int = 500
2526

27+
EqualityBodySourceClasses = (
28+
Audit | DetailedCase | CaseCompliance | Report | SimplifiedCase | None
29+
)
30+
2631

2732
def populate_equality_body_columns(
2833
case: DetailedCase | SimplifiedCase,
@@ -31,72 +36,64 @@ def populate_equality_body_columns(
3136
"""
3237
Collect data for a case to export to the equality body
3338
"""
34-
contact_details: str = (
35-
format_simplified_contacts(contacts=case.contacts)
36-
if isinstance(case, SimplifiedCase)
37-
else None
38-
)
39-
source_instances: dict = {
40-
SimplifiedCase: case if isinstance(case, SimplifiedCase) else None,
41-
Audit: case.audit if hasattr(case, "audit") else None,
42-
CaseCompliance: case.compliance if hasattr(case, "compliance") else None,
43-
Report: case.report if hasattr(case, "report") else None,
44-
}
39+
source_instances: dict[EqualityBodySourceClasses] = {}
40+
if isinstance(case, DetailedCase):
41+
source_instances[DetailedCase] = case
42+
elif isinstance(case, SimplifiedCase):
43+
source_instances[SimplifiedCase] = case
44+
if hasattr(case, "audit"):
45+
source_instances[Audit] = case.audit
46+
if hasattr(case, "compliance"):
47+
source_instances[CaseCompliance] = case.compliance
48+
if hasattr(case, "report"):
49+
source_instances[Report] = case.report
50+
4551
columns: list[EqualityBodyCSVColumn] = copy.deepcopy(column_definitions)
52+
4653
for column in columns:
47-
source_instance: Audit | SimplifiedCase | CaseCompliance | Report | None = (
48-
source_instances.get(column.source_class)
54+
source_instance: EqualityBodySourceClasses = source_instances.get(
55+
column.source_class
4956
)
50-
edit_url_instance: Audit | SimplifiedCase | CaseCompliance | Report | None = (
51-
source_instances.get(column.edit_url_class)
57+
edit_url_instance: EqualityBodySourceClasses = source_instances.get(
58+
column.edit_url_class
5259
)
53-
if column.column_header == CONTACT_DETAILS_COLUMN_HEADER:
54-
column.formatted_data = contact_details
55-
else:
56-
column.formatted_data = format_model_field(
57-
source_instance=source_instance, column=column
58-
)
60+
61+
column.formatted_data = format_model_field(
62+
source_instance=source_instance, column=column
63+
)
64+
5965
if column.edit_url_name is not None and edit_url_instance is not None:
6066
column.edit_url = reverse(
6167
column.edit_url_name, kwargs={"pk": edit_url_instance.id}
6268
)
6369
if column.edit_url_anchor:
6470
column.edit_url += f"#{column.edit_url_anchor}"
71+
6572
return columns
6673

6774

6875
def populate_csv_columns(
6976
case: DetailedCase | SimplifiedCase, column_definitions: list[CSVColumn]
7077
) -> list[CSVColumn]:
71-
"""
72-
Collect data for a case to export
73-
"""
74-
source_instances: dict = {
75-
SimplifiedCase: case if isinstance(case, SimplifiedCase) else None,
76-
DetailedCase: case if isinstance(case, DetailedCase) else None,
77-
CaseCompliance: case.compliance if hasattr(case, "compliance") else None,
78-
CaseStatus: case.status,
79-
SimplifiedContact: (
80-
case.contact_set.filter(is_deleted=False).first()
81-
if isinstance(case, SimplifiedCase)
82-
else None
83-
),
84-
DetailedContact: (
85-
case.contact_set.filter(is_deleted=False).first()
86-
if isinstance(case, DetailedCase)
87-
else None
88-
),
89-
}
78+
"""Collect data for a case to export"""
79+
source_instances: dict[ExportableClasses] = {}
80+
if isinstance(case, DetailedCase):
81+
source_instances[DetailedCase] = case
82+
source_instances[DetailedContact] = case.contact_set.filter(
83+
is_deleted=False
84+
).first()
85+
elif isinstance(case, SimplifiedCase):
86+
source_instances[SimplifiedCase] = case
87+
source_instances[CaseStatus] = case.status
88+
source_instances[SimplifiedContact] = case.contact_set.filter(
89+
is_deleted=False
90+
).first()
91+
if hasattr(case, "compliance"):
92+
source_instances[CaseCompliance] = case.compliance
93+
9094
columns: list[CSVColumn] = copy.deepcopy(column_definitions)
9195
for column in columns:
92-
source_instance: (
93-
DetailedCase
94-
| SimplifiedCase
95-
| CaseCompliance
96-
| CaseStatus
97-
| SimplifiedContact
98-
| None
99-
) = source_instances.get(column.source_class)
96+
source_instance: ExportableClasses = source_instances.get(column.source_class)
10097
column.formatted_data = format_model_field(
10198
source_instance=source_instance, column=column
10299
)

accessibility_monitoring_platform/apps/simplified/templates/simplified/forms/case_close.html renamed to accessibility_monitoring_platform/apps/cases/templates/cases/closing_case.html

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
{% extends 'common/case_form.html' %}
22

33
{% block preform %}
4-
{% include 'simplified/helpers/email_templates.html' %}
4+
<div class="amp-margin-bottom-40">
5+
{% if case.test_type == 'simplified' %}
6+
{% include 'simplified/helpers/email_templates.html' %}
7+
{% elif case.test_type == 'detailed' %}
8+
{% include 'detailed/helpers/contacts_list.html' %}
9+
{% include 'detailed/helpers/zendesk_tickets.html' %}
10+
{% endif %}
11+
</div>
512
{% if not required_data_missing_columns %}
613
<div class="govuk-grid-row amp-margin-top-30">
714
<div class="govuk-grid-column-full">
@@ -74,7 +81,7 @@ <h2 class="govuk-heading-m" id="guidance-on-closing-the-case">Guidance on closin
7481
</p>
7582
{% if required_data_missing_columns %}
7683
<h2 class="govuk-heading-m" id="missing-data">Missing data</h2>
77-
{% if not case.audit %}
84+
{% if case.test_type == 'simplified' and not case.audit %}
7885
<p class="govuk-body-m">
7986
There isn't an initial test
8087
(<a href="{% url 'simplified:edit-test-results' case.id %}" class="govuk-link govuk-link--no-visited-state">Go to testing details</a>)
@@ -97,19 +104,19 @@ <h2 class="govuk-heading-m" id="missing-data">Missing data</h2>
97104

98105
<h2 class="govuk-heading-m" id="1-metadata">1. Metadata</h2>
99106
{% for equality_body_column in equality_body_metadata_columns %}
100-
{% include 'simplified/helpers/csv_column.html' %}
107+
{% include 'cases/helpers/equality_body_csv_column.html' %}
101108
{% endfor %}
102109
<h2 class="govuk-heading-m" id="2-report-and-recommendation">2. Report and recommendation</h2>
103110
{% for equality_body_column in equality_body_report_columns %}
104-
{% include 'simplified/helpers/csv_column.html' %}
111+
{% include 'cases/helpers/equality_body_csv_column.html' %}
105112
{% endfor %}
106113
<h2 class="govuk-heading-m" id="3-correspondence">3. Correspondence</h2>
107114
{% for equality_body_column in equality_body_correspondence_columns %}
108-
{% include 'simplified/helpers/csv_column.html' %}
115+
{% include 'cases/helpers/equality_body_csv_column.html' %}
109116
{% endfor %}
110117
<h2 class="govuk-heading-m" id="4-test-summary">4. Test summary</h2>
111118
{% for equality_body_column in equality_body_test_summary_columns %}
112-
{% include 'simplified/helpers/csv_column.html' %}
119+
{% include 'cases/helpers/equality_body_csv_column.html' %}
113120
{% endfor %}
114121
</div>
115122
</div>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<p class="govuk-body-m amp-margin-bottom-5"><b>
2+
{{ equality_body_column.column_header }}
3+
{% if equality_body_column.required %}
4+
| Required
5+
{% if not equality_body_column.formatted_data or equality_body_column.formatted_data == equality_body_column.default_data %}
6+
and incomplete
7+
{% endif %}
8+
{% endif %}
9+
</b></p>
10+
<p class="govuk-body-m{% if equality_body_column.edit_url %} amp-margin-bottom-5{% endif %}">
11+
{% if equality_body_column.formatted_data or equality_body_column.formatted_data == 0 %}
12+
{% if equality_body_column.data_type == 'url' %}
13+
<a href="{{ equality_body_column.formatted_data }}" class="govuk-link" target="_blank">
14+
{{ equality_body_column.formatted_data }}</a>
15+
{% elif equality_body_column.data_type == 'markdown' %}
16+
<div class="amp-markdown">{{ equality_body_column.formatted_data|markdown_to_html }}</div>
17+
{% elif equality_body_column.data_type == 'pre' %}
18+
<pre class="govuk-body">{{ equality_body_column.formatted_data }}</pre>
19+
{% else %}
20+
<span class="amp-pre-line">{{ equality_body_column.formatted_data }}{{ equality_body_column.ui_suffix }}</span>
21+
{% endif %}
22+
{% else %}
23+
No data available
24+
{% endif %}
25+
</p>
26+
{% if equality_body_column.edit_url %}
27+
<p class="govuk-body-m">
28+
<a href="{{ equality_body_column.edit_url }}" class="govuk-link govuk-link--no-visited-state">
29+
{{ equality_body_column.edit_url_label }}{% if equality_body_column.edit_url_label == 'Edit' %}<span class="govuk-visually-hidden"> {{ equality_body_column.column_header }}</span>{% endif %}</a>
30+
</p>
31+
{% endif %}

accessibility_monitoring_platform/apps/common/sitemap.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from ..comments.models import Comment
2626
from ..detailed.forms import CaseCloseUpdateForm as DetailedCaseCloseUpdateForm
2727
from ..detailed.forms import (
28+
CaseRecommendationUpdateForm,
2829
ContactInformationRequestUpdateForm,
2930
DetailedCaseMetadataUpdateForm,
3031
EnforcementBodyMetadataUpdateForm,
@@ -1612,13 +1613,21 @@ def __init__(self, type=PlatformPageGroup.Type.MOBILE_CASE_NAV, **kwargs):
16121613
complete_flag_name="retest_compliance_decisions_complete_date",
16131614
case_details_form_class=RetestComplianceDecisionsUpdateForm,
16141615
case_details_template_name="cases/details/details.html",
1615-
next_page_url_name="detailed:edit-case-close",
1616+
next_page_url_name="detailed:edit-case-recommendation",
16161617
),
16171618
],
16181619
),
16191620
DetailedCasePlatformPageGroup(
16201621
name="Closing the case",
16211622
pages=[
1623+
DetailedCasePlatformPage(
1624+
name="Recommendation",
1625+
url_name="detailed:edit-case-recommendation",
1626+
complete_flag_name="case_recommendation_complete_date",
1627+
case_details_form_class=CaseRecommendationUpdateForm,
1628+
case_details_template_name="cases/details/details.html",
1629+
next_page_url_name="detailed:edit-case-close",
1630+
),
16221631
DetailedCasePlatformPage(
16231632
name="Closing the case",
16241633
url_name="detailed:edit-case-close",

0 commit comments

Comments
 (0)