Add a helper Service method to get a template given user has permission

Checks if the user has access to the template's parent folder and
either returns the template or a 403 response.

This method should be used instead of calling service_api_client from
the views.
This commit is contained in:
Alexey Bezhan
2019-03-19 15:59:59 +00:00
parent af2eb0555d
commit a30c9733b0

View File

@@ -171,6 +171,22 @@ class Service():
and template.get('folder') == template_folder_id
]
def get_template(self, template_id, version=None):
return service_api_client.get_service_template(self.id, str(template_id), version)['data']
def get_template_with_user_permission_or_403(self, template_id, user):
template = self.get_template(template_id)
if not self.has_permission("edit_folder_permissions"):
return template
template_folder = self.get_template_folder(template["folder"])
if not user.has_template_folder_permission(template_folder):
abort(403)
return template
@property
def available_template_types(self):
return list(filter(self.has_permission, self.TEMPLATE_TYPES))