@@ -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."""
0 commit comments