Add URL converters for template and file types

Sometimes we manually check that a URL parameter is in a required set.
Sometimes we don’t bother.

This commit adds a URL converter to do this so that:
- we don’t have to re-write the same code every time
- it’s easier to apply this check to other endpoints

This means endpoints that previously allowed a `template_type` or
`message_type` of `None` now 404. So I’ve had to add new routes for
with URLs that don’t include such parameters.

So this…:
```
/services/128b91b6-2996-4107-bb65-51b7c24a728d/notifications/sms.csv
/services/128b91b6-2996-4107-bb65-51b7c24a728d/notifications/None.csv
```

…becomes:
```
/services/128b91b6-2996-4107-bb65-51b7c24a728d/notifications/sms.csv
/services/128b91b6-2996-4107-bb65-51b7c24a728d/notifications.csv
```

This matches what we do for the HTML-responding equivalent (see
265931d217/app/main/views/jobs.py (L215-L216))
This commit is contained in:
Chris Hill-Scott
2019-11-04 11:20:08 +00:00
parent ef335e7601
commit 545b485d86
5 changed files with 28 additions and 19 deletions

View File

@@ -8,7 +8,6 @@ from datetime import datetime
from dateutil import parser
from flask import (
Response,
abort,
flash,
jsonify,
redirect,
@@ -180,15 +179,11 @@ def get_preview_error_image():
return file.read()
@main.route("/services/<uuid:service_id>/notification/<uuid:notification_id>.<filetype>")
@main.route("/services/<uuid:service_id>/notification/<uuid:notification_id>.<letter_file_extension:filetype>")
@user_has_permissions('view_activity')
def view_letter_notification_as_preview(
service_id, notification_id, filetype, with_metadata=False
):
if filetype not in ('pdf', 'png'):
abort(404)
try:
preview = notification_api_client.get_notification_letter_preview(
service_id,