Skip to content

Commit 27cefab

Browse files
authored
32060 - Add cover page for QS's transfer of ownership registration (#2284)
* 32060 - add cover page for qs transfer of ownership registration Signed-off-by: Hongjing Chen <Hongjing.Chen@gov.bc.ca> * fix linting Signed-off-by: Hongjing Chen <Hongjing.Chen@gov.bc.ca> --------- Signed-off-by: Hongjing Chen <Hongjing.Chen@gov.bc.ca>
1 parent 582310c commit 27cefab

3 files changed

Lines changed: 47 additions & 21 deletions

File tree

mhr-api/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "mhr-api"
3-
version = "2.1.6"
3+
version = "2.1.7"
44
description = ""
55
authors = ["dlovett <doug@daxiom.com>"]
66
license = "BSD 3"

mhr-api/src/mhr_api/reports/v2/report.py

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ def get_pdf(self, report_type=None):
6464
return self.get_registration_cover_pdf()
6565
if self._report_key == ReportTypes.MHR_REGISTRATION_STAFF:
6666
return self.get_registration_staff_pdf()
67+
68+
add_cover = self._report_key == ReportTypes.MHR_TRANSFER
69+
70+
# Generate the cover page for specific non-staff reports
71+
if add_cover:
72+
logger.debug("Generate cover letter for specific non-staff report")
73+
cover_content, cover_status, cover_headers = self.get_registration_cover_pdf()
74+
if cover_status != HTTPStatus.OK:
75+
return cover_content, cover_status, cover_headers
76+
6777
logger.debug("Account {0} report type {1} setting up report data.".format(self._account_id, self._report_key))
6878
data = self._setup_report_data()
6979
url = current_app.config.get("REPORT_SVC_URL") + SINGLE_URI
@@ -85,6 +95,14 @@ def get_pdf(self, report_type=None):
8595
"Account {0} response status: {1} error: {2}.".format(self._account_id, response.status_code, content)
8696
)
8797
return jsonify(message=content), response.status_code, None
98+
99+
# Merge the cover letter and registration reports if applicable.
100+
if add_cover:
101+
files = []
102+
files.append(cover_content)
103+
files.append(response.content)
104+
return Report.batch_merge(files)
105+
88106
return response.content, response.status_code, {"Content-Type": "application/pdf"}
89107

90108
def get_search_pdf(self):
@@ -136,27 +154,33 @@ def get_search_pdf(self):
136154
def get_registration_cover_pdf(self):
137155
"""Render a registration cover letter report."""
138156
logger.debug(f"Account {self._account_id} setting up reg cover report data.")
139-
self._report_key = ReportTypes.MHR_REGISTRATION_COVER
140-
data = self._setup_report_data()
141-
url = current_app.config.get("REPORT_SVC_URL") + SINGLE_URI
142-
meta_data = report_utils.get_report_meta_data(self._report_key)
143-
files = report_utils.get_report_files(data, self._report_key, False)
144-
headers = Report.get_headers()
145-
response_cover = requests.post(url=url, headers=headers, data=meta_data, files=files, timeout=1800.0)
146-
logger.debug(
147-
"Account {0} report type {1} response status: {2}.".format(
148-
self._account_id, self._report_key, response_cover.status_code
149-
)
150-
)
151-
if response_cover.status_code != HTTPStatus.OK:
152-
content = ResourceErrorCodes.REPORT_ERR + ": " + response_cover.content.decode("ascii")
153-
logger.error(
154-
"Account {0} response status: {1} error: {2}.".format(
155-
self._account_id, response_cover.status_code, content
157+
original_report_key = self._report_key
158+
original_report_data = copy.deepcopy(self._report_data)
159+
try:
160+
self._report_key = ReportTypes.MHR_REGISTRATION_COVER
161+
data = self._setup_report_data()
162+
url = current_app.config.get("REPORT_SVC_URL") + SINGLE_URI
163+
meta_data = report_utils.get_report_meta_data(self._report_key)
164+
files = report_utils.get_report_files(data, self._report_key, False)
165+
headers = Report.get_headers()
166+
response_cover = requests.post(url=url, headers=headers, data=meta_data, files=files, timeout=1800.0)
167+
logger.debug(
168+
"Account {0} report type {1} response status: {2}.".format(
169+
self._account_id, self._report_key, response_cover.status_code
156170
)
157171
)
158-
return jsonify(message=content), response_cover.status_code, None
159-
return response_cover.content, response_cover.status_code, {"Content-Type": "application/pdf"}
172+
if response_cover.status_code != HTTPStatus.OK:
173+
content = ResourceErrorCodes.REPORT_ERR + ": " + response_cover.content.decode("ascii")
174+
logger.error(
175+
"Account {0} response status: {1} error: {2}.".format(
176+
self._account_id, response_cover.status_code, content
177+
)
178+
)
179+
return jsonify(message=content), response_cover.status_code, None
180+
return response_cover.content, response_cover.status_code, {"Content-Type": "application/pdf"}
181+
finally:
182+
self._report_key = original_report_key
183+
self._report_data = original_report_data
160184

161185
def get_registration_staff_pdf(self):
162186
"""Render a staff MH registration report with cover letter."""

mhr-api/src/mhr_api/resources/v1/pay_callback.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,9 @@ def queue_transfer(draft: MhrDraft, current_reg: MhrRegistration, new_reg: MhrRe
309309
queue_report(new_reg, draft, response_json, ReportTypes.MHR_TRANSFER, current_json)
310310

311311

312-
def complete_registration(draft: MhrDraft, base_reg: MhrRegistration, request_json: dict, invoice_id: str):
312+
def complete_registration(
313+
draft: MhrDraft, base_reg: MhrRegistration, request_json: dict, invoice_id: str
314+
): # pylint: disable=too-many-statements
313315
"""Process the registration based on the payload status and draft registration type."""
314316
invoice_id: str = draft.user_id
315317
try:

0 commit comments

Comments
 (0)