def view_notification(service_id, notification_id): notification = notification_api_client.get_notification( service_id, str(notification_id)) notification['template'].update( {'reply_to_text': notification['reply_to_text']}) if notification['template']['is_precompiled_letter']: file_contents = view_letter_notification_as_preview( service_id, notification_id, "pdf") page_count = pdf_page_count(io.BytesIO(file_contents)) else: page_count = get_page_count_for_letter(notification['template']) template = get_template( notification['template'], current_service, letter_preview_url=url_for( '.view_letter_notification_as_preview', service_id=service_id, notification_id=notification_id, filetype='png', ), page_count=page_count, show_recipient=True, redact_missing_personalisation=True, ) template.values = get_all_personalisation_from_notification(notification) if notification['job']: job = job_api_client.get_job(service_id, notification['job']['id'])['data'] else: job = None return render_template( 'views/notifications/notification.html', finished=(notification['status'] in (DELIVERED_STATUSES + FAILURE_STATUSES)), uploaded_file_name='Report', template=template, job=job, updates_url=url_for(".view_notification_updates", service_id=service_id, notification_id=notification['id'], status=request.args.get('status'), help=get_help_argument()), partials=get_single_notification_partials(notification), created_by=notification.get('created_by'), created_at=notification['created_at'], help=get_help_argument(), estimated_letter_delivery_date=get_letter_timings( notification['created_at']).earliest_delivery, notification_id=notification['id'], can_receive_inbound=(current_service.has_permission('inbound_sms')), is_precompiled_letter=notification['template'] ['is_precompiled_letter'])
def test_get_estimated_delivery_date_for_letter( upload_time, expected_print_time, is_printed, expected_earliest, expected_latest, ): timings = get_letter_timings(upload_time) assert timings.printed_by.strftime('%A %H:%M') == expected_print_time assert timings.is_printed == is_printed assert timings.earliest_delivery.strftime('%A %Y-%m-%d') == expected_earliest assert timings.latest_delivery.strftime('%A %Y-%m-%d') == expected_latest
def get_job_partials(job, template): filter_args = parse_filter_args(request.args) filter_args['status'] = set_status_filters(filter_args) notifications = notification_api_client.get_notifications_for_service( job['service'], job['id'], status=filter_args['status']) if template['template_type'] == 'letter': counts = render_template( 'partials/jobs/count-letters.html', total=job.get('notification_count', 0), delivery_estimate=get_letter_timings( job['created_at']).earliest_delivery, ) else: counts = render_template('partials/count.html', counts=_get_job_counts(job), status=filter_args['status']) return { 'counts': counts, 'notifications': render_template( 'partials/jobs/notifications.html', notifications=list( add_preview_of_content_to_notifications( notifications['notifications'])), more_than_one_page=bool( notifications.get('links', {}).get('next')), percentage_complete=(job['notifications_requested'] / job['notification_count'] * 100), download_link=url_for('.view_job_csv', service_id=current_service['id'], job_id=job['id'], status=request.args.get('status')), time_left=get_time_left(job['created_at']), job=job, template=template, template_version=job['template_version'], ), 'status': render_template('partials/jobs/status.html', job=job), }