From 921de471640d2ff4d955434727d8125afd00a0d6 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 8 Nov 2018 11:54:57 +0000 Subject: [PATCH] Refactor template navigation options into model This has two advantages: - less logic in the view - lets us filer the available navigation by which channels (email, text letter) a service has available --- app/main/views/templates.py | 7 +------ app/models/service.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 1e81ad8f8..8d7018bb7 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -117,12 +117,7 @@ def choose_template(service_id, template_type='all', template_folder_id=None): ), '' ) - for label, key in filter(None, [ - ('All', 'all'), - ('Text message', 'sms'), - ('Email', 'email'), - ('Letter', 'letter') if current_service.has_permission('letter') else None, - ]) + for label, key in [('All', 'all')] + current_service.available_template_types_as_tuples ] return render_template( diff --git a/app/models/service.py b/app/models/service.py index f835c7422..c0b6649b6 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -36,6 +36,12 @@ class Service(): 'service_callback_api', } + TEMPLATE_TYPES = ( + ('sms', 'Text message'), + ('email', 'Email'), + ('letter', 'Letter'), + ) + def __init__(self, _dict): # in the case of a bad request current service may be `None` self._dict = _dict or {} @@ -116,10 +122,17 @@ class Service(): @property def available_template_types(self): return [ - channel for channel in ('email', 'sms', 'letter') + channel for channel, _ in self.TEMPLATE_TYPES if self.has_permission(channel) ] + @property + def available_template_types_as_tuples(self): + return [ + (label, value) for value, label in self.TEMPLATE_TYPES + if self.has_permission(value) + ] + @property def has_templates(self): return len(self.all_templates) > 0