from app.extensions import redis_client from app.notify_client import NotifyAdminAPIClient, cache class TemplateFolderAPIClient(NotifyAdminAPIClient): @cache.delete('service-{service_id}-template-folders') def create_template_folder( self, service_id, name, parent_id=None ): data = { 'name': name, 'parent_id': parent_id } return self.post('/service/{}/template-folder'.format(service_id), data)['data']['id'] @cache.set('service-{service_id}-template-folders') def get_template_folders(self, service_id): return self.get('/service/{}/template-folder'.format(service_id))['template_folders'] def get_template_folder(self, service_id, folder_id): if folder_id is None: return { 'id': None, 'name': 'Templates', 'parent_id': None, } else: return next( folder for folder in self.get_template_folders(service_id) if folder['id'] == str(folder_id) ) @cache.delete('service-{service_id}-template-folders') @cache.delete('service-{service_id}-templates') def move_to_folder(self, service_id, folder_id, template_ids, folder_ids): if folder_id: url = '/service/{}/template-folder/{}/contents'.format(service_id, folder_id) else: url = '/service/{}/template-folder/contents'.format(service_id) self.post(url, { 'templates': list(template_ids), 'folders': list(folder_ids), }) if template_ids: redis_client.delete(*(f'service-{service_id}-template-{id}-version-None' for id in template_ids)) @cache.delete('service-{service_id}-template-folders') def update_template_folder(self, service_id, template_folder_id, name, users_with_permission=None): data = {"name": name} if users_with_permission: data["users_with_permission"] = users_with_permission self.post( '/service/{}/template-folder/{}'.format(service_id, template_folder_id), data ) @cache.delete('service-{service_id}-template-folders') def delete_template_folder(self, service_id, template_folder_id): self.delete('/service/{}/template-folder/{}'.format(service_id, template_folder_id), {}) template_folder_api_client = TemplateFolderAPIClient()