def post(self): # Require folios or admin_folios permission to create a portfolio permissions_engine.ensure_permitted(SystemPermissions.PERMIT_FOLIOS, get_session_user()) db_session = data_engine.db_get_session() try: params = self._get_validated_object_parameters(request.form) folio = Folio(params['human_id'] or Folio.create_human_id(), params['name'], params['description'], get_session_user()) self._set_permissions(folio, params, db_session) data_engine.create_portfolio( folio, get_session_user(), _db_session=db_session, _commit=True # fail here if human_id not unique ) # Return a clean object the same as for get(id) folio = data_engine.get_portfolio(folio.id, load_images=True, load_history=True) folio = _prep_folio_object(folio) return make_api_success_response( object_to_dict(folio, _omit_fields)) finally: db_session.close()
def post(self, function_name): """ Launches a system task """ # Validate function name if getattr(tasks, function_name, None) is None: raise DoesNotExistError(function_name) # Requires super user permissions_engine.ensure_permitted(SystemPermissions.PERMIT_SUPER_USER, get_session_user()) # API parameters depend on the function params = self._get_validated_parameters(function_name, request.form) # Set remaining parameters for the task (description, task_params, priority, log_level, error_log_level, keep_secs) = self._get_task_data( function_name, params ) # Queue the task db_task = task_engine.add_task( get_session_user(), description, function_name, task_params, priority, log_level, error_log_level, keep_secs ) if db_task is None: raise AlreadyExistsError("Task is already running") # Decode the params before returning db_task.params = cPickle.loads(db_task.params) tdict = object_to_dict(db_task) if tdict.get("user") is not None: # Do not give out anything password related del tdict["user"]["password"] return make_api_success_response(tdict)
def post(self): permissions_engine.ensure_permitted( SystemPermissions.PERMIT_SUPER_USER, get_session_user()) params = self._get_validated_object_parameters(request.form) template = ImageTemplate(params['name'], params['description'], params['template']) template = data_engine.save_object(template, refresh=True) image_engine.reset_templates() return self.get(template.id)
def get(self, task_id): db_task = task_engine.get_task(task_id=task_id, decode_attrs=True) if not db_task: raise DoesNotExistError(str(task_id)) else: # Requires super user or task owner if not db_task.user or db_task.user.id != get_session_user_id(): permissions_engine.ensure_permitted(SystemPermissions.PERMIT_SUPER_USER, get_session_user()) tdict = object_to_dict(db_task) if tdict.get("user") is not None: # Do not give out anything password related del tdict["user"]["password"] return make_api_success_response(tdict)
def post(self): # Check permissions! The current user must have permissions admin to create groups. permissions_engine.ensure_permitted( SystemPermissions.PERMIT_ADMIN_PERMISSIONS, get_session_user()) params = self._get_validated_object_parameters(request.form) if params['group_type'] == Group.GROUP_TYPE_SYSTEM: raise ParameterError('System groups cannot be created') group = Group(params['name'], params['description'], params['group_type']) group.users = [] self._set_permissions(group, params) data_engine.create_group(group) return make_api_success_response(object_to_dict(group))
def put(self, template_id): permissions_engine.ensure_permitted( SystemPermissions.PERMIT_SUPER_USER, get_session_user()) params = self._get_validated_object_parameters(request.form) template = data_engine.get_image_template(template_id) if template is None: raise DoesNotExistError(str(template_id)) template.name = params['name'] template.description = params['description'] template.template = params['template'] data_engine.save_object(template) image_engine.reset_templates() return self.get(template.id)
def delete(self, template_id): permissions_engine.ensure_permitted( SystemPermissions.PERMIT_SUPER_USER, get_session_user()) template_info = data_engine.get_image_template(template_id) if template_info is None: raise DoesNotExistError(str(template_id)) db_default_template = data_engine.get_object(Property, Property.DEFAULT_TEMPLATE) if template_info.name.lower() == db_default_template.value.lower(): raise ParameterError( 'The system default template cannot be deleted') data_engine.delete_object(template_info) image_engine.reset_templates() return make_api_success_response()
def delete(self, group_id): # Check permissions! The current user must have permissions admin to delete groups. permissions_engine.ensure_permitted( SystemPermissions.PERMIT_ADMIN_PERMISSIONS, get_session_user()) group = data_engine.get_group(group_id=group_id, load_users=True) if group is None: raise DoesNotExistError(str(group_id)) try: data_engine.delete_group(group) except ValueError as e: raise ParameterError(str(e)) # Reset permissions and session caches reset_user_sessions(group.users) permissions_engine.reset() return make_api_success_response()
def delete(self, group_id): # Check permissions! The current user must have permissions admin to delete groups. permissions_engine.ensure_permitted( SystemPermissions.PERMIT_ADMIN_PERMISSIONS, get_session_user() ) group = data_engine.get_group(group_id=group_id) if group is None: raise DoesNotExistError(str(group_id)) try: data_engine.delete_group(group) except ValueError as e: raise ParameterError(str(e)) # Reset permissions cache permissions_engine.reset() return make_api_success_response()
def post(self): # Check permissions! The current user must have permissions admin to create groups. permissions_engine.ensure_permitted( SystemPermissions.PERMIT_ADMIN_PERMISSIONS, get_session_user() ) params = self._get_validated_object_parameters(request.form) if params['group_type'] == Group.GROUP_TYPE_SYSTEM: raise ParameterError('System groups cannot be created') group = Group( params['name'], params['description'], params['group_type'] ) group.users = [] self._set_permissions(group, params) data_engine.create_group(group) return make_api_success_response(object_to_dict(group))