mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-07 14:58:24 -04:00
Make user model return a service model, not JSON
This makes it: - nicer, by having access to sensibly named things like `Service.trial_mode` instead of `service['restricted']`. - less likely to write Jinja code like `service.trail_mode`, which would fail silently if `service` was a dictionary
This commit is contained in:
@@ -367,10 +367,7 @@ def choose_template_to_copy(
|
|||||||
else:
|
else:
|
||||||
return render_template(
|
return render_template(
|
||||||
'views/templates/copy.html',
|
'views/templates/copy.html',
|
||||||
services_templates_and_folders=TemplateLists([
|
services_templates_and_folders=TemplateLists(current_user),
|
||||||
Service(service) for service in
|
|
||||||
current_user.services
|
|
||||||
], user=current_user),
|
|
||||||
search_form=SearchByNameForm(),
|
search_form=SearchByNameForm(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ class Service(JSONModel):
|
|||||||
def __init__(self, _dict):
|
def __init__(self, _dict):
|
||||||
|
|
||||||
super().__init__(_dict)
|
super().__init__(_dict)
|
||||||
|
|
||||||
if 'permissions' not in self._dict:
|
if 'permissions' not in self._dict:
|
||||||
self.permissions = {'email', 'sms', 'letter'}
|
self.permissions = {'email', 'sms', 'letter'}
|
||||||
|
|
||||||
@@ -94,6 +93,10 @@ class Service(JSONModel):
|
|||||||
def trial_mode(self):
|
def trial_mode(self):
|
||||||
return self._dict['restricted']
|
return self._dict['restricted']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def live(self):
|
||||||
|
return not self.trial_mode
|
||||||
|
|
||||||
def has_permission(self, permission):
|
def has_permission(self, permission):
|
||||||
return permission in self.permissions
|
return permission in self.permissions
|
||||||
|
|
||||||
|
|||||||
@@ -65,9 +65,9 @@ class TemplateList():
|
|||||||
|
|
||||||
class TemplateLists():
|
class TemplateLists():
|
||||||
|
|
||||||
def __init__(self, services, user=None):
|
def __init__(self, user):
|
||||||
self.services = sorted(
|
self.services = sorted(
|
||||||
services,
|
user.services,
|
||||||
key=lambda service: service.name.lower(),
|
key=lambda service: service.name.lower(),
|
||||||
)
|
)
|
||||||
self.user = user
|
self.user = user
|
||||||
|
|||||||
@@ -242,10 +242,28 @@ class User(JSONModel, UserMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def services(self):
|
def services(self):
|
||||||
all_services = self.orgs_and_services['services_without_organisations'] + next(chain(
|
return sorted(
|
||||||
org['services'] for org in self.orgs_and_services['organisations']
|
self.services_with_organisation + self.services_without_organisations,
|
||||||
), [])
|
key=lambda service: service.name.lower(),
|
||||||
return sorted(all_services, 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
|
@property
|
||||||
def service_ids(self):
|
def service_ids(self):
|
||||||
@@ -254,21 +272,21 @@ class User(JSONModel, UserMixin):
|
|||||||
@property
|
@property
|
||||||
def trial_mode_services(self):
|
def trial_mode_services(self):
|
||||||
return [
|
return [
|
||||||
service for service in self.services
|
service for service in self.services if service.trial_mode
|
||||||
if service['restricted']
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def live_services(self):
|
def live_services(self):
|
||||||
return [
|
return [
|
||||||
service for service in self.services
|
service for service in self.services if service.live
|
||||||
if not service['restricted']
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def live_services_not_belonging_to_users_organisations(self):
|
def live_services_not_belonging_to_users_organisations(self):
|
||||||
|
from app.models.service import Service
|
||||||
return [
|
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']
|
if not service['restricted']
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user