Example #1
0
 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()
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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))
Example #6
0
 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)
Example #7
0
 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()
Example #8
0
 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()
Example #9
0
 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()
Example #10
0
 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))