diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 62c8ca8a1..27ac5d1c1 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -367,10 +367,7 @@ def choose_template_to_copy( else: return render_template( 'views/templates/copy.html', - services_templates_and_folders=TemplateLists([ - Service(service) for service in - current_user.services - ], user=current_user), + services_templates_and_folders=TemplateLists(current_user), search_form=SearchByNameForm(), ) diff --git a/app/models/service.py b/app/models/service.py index cae864e1e..7356b7db6 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -56,7 +56,6 @@ class Service(JSONModel): def __init__(self, _dict): super().__init__(_dict) - if 'permissions' not in self._dict: self.permissions = {'email', 'sms', 'letter'} @@ -94,6 +93,10 @@ class Service(JSONModel): def trial_mode(self): return self._dict['restricted'] + @property + def live(self): + return not self.trial_mode + def has_permission(self, permission): return permission in self.permissions diff --git a/app/models/template_list.py b/app/models/template_list.py index 678e72285..08de74044 100644 --- a/app/models/template_list.py +++ b/app/models/template_list.py @@ -65,9 +65,9 @@ class TemplateList(): class TemplateLists(): - def __init__(self, services, user=None): + def __init__(self, user): self.services = sorted( - services, + user.services, key=lambda service: service.name.lower(), ) self.user = user diff --git a/app/models/user.py b/app/models/user.py index 9ef7dfa54..3bbaa7e1b 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -242,10 +242,28 @@ class User(JSONModel, UserMixin): @property def services(self): - all_services = self.orgs_and_services['services_without_organisations'] + next(chain( - org['services'] for org in self.orgs_and_services['organisations'] - ), []) - return sorted(all_services, key=lambda service: service['name'].lower()) + return sorted( + self.services_with_organisation + self.services_without_organisations, + key=lambda service: service.name.lower(), + ) + + @property + def services_with_organisation(self): + from app.models.service import Service + return [ + Service(service) for service in + next(chain( + org['services'] for org in self.orgs_and_services['organisations'] + ), []) + ] + + @property + def services_without_organisations(self): + from app.models.service import Service + return [ + Service(service) for service in + self.orgs_and_services['services_without_organisations'] + ] @property def service_ids(self): @@ -254,21 +272,21 @@ class User(JSONModel, UserMixin): @property def trial_mode_services(self): return [ - service for service in self.services - if service['restricted'] + service for service in self.services if service.trial_mode ] @property def live_services(self): return [ - service for service in self.services - if not service['restricted'] + service for service in self.services if service.live ] @property def live_services_not_belonging_to_users_organisations(self): + from app.models.service import Service return [ - service for service in self.orgs_and_services['services_without_organisations'] + Service(service) + for service in self.orgs_and_services['services_without_organisations'] if not service['restricted'] ]