Add a specific route for template_type=all

`all` is not a real template type, so for links to template folders that
apply to all template types we have a URL that looks like:
```
/services/<uuid:service_id>/templates/folders/<uuid:template_folder_id>
```

However Flask only generates this url when `url_for` is called with
`template_type=None`. If called with `template_type=all` then Flask will
generate a URL like
```
/services/<uuid:service_id>/templates/all/folders/<uuid:template_folder_id>
```

However attempting to load this URL will now 404, since `all` is not a
template type recognised by the regex introduced in
https://github.com/alphagov/notifications-admin/pull/3176

It would be nice to not have URLs with `all` in them at all, but since
people might have bookmarked them we need to support them indefinitely.

Also considered but decided against adding `all` to the set of template
types because it might cause other problems, for example attempting to
create a new template with a type of `all` would never work.
This commit is contained in:
Chris Hill-Scott
2019-11-13 12:45:26 +00:00
parent 7735c23428
commit a0f6f9b137
3 changed files with 13 additions and 1 deletions

View File

@@ -422,7 +422,7 @@ def format_decorators(decorators, indent=8):
def test_code_to_extract_decorators_works_with_known_examples():
assert (
'templates.choose_template',
['main.route', 'main.route', 'main.route', 'main.route', 'user_has_permissions'],
['main.route', 'main.route', 'main.route', 'main.route', 'main.route', 'user_has_permissions'],
) in list(
get_routes_and_decorators(SERVICE_ID_ARGUMENT)
)