MCPcopy Create free account
hub / github.com/StackStorm/st2 / _get_one_by_id

Method _get_one_by_id

st2api/st2api/controllers/resource.py:294–354  ·  view source on GitHub ↗

:param exclude_fields: A list of object fields to exclude. :type exclude_fields: ``list`` :param include_fields: A list of object fields to include. :type include_fields: ``list`` :param get_by_id_kwargs: Additional keyword arguments which are passed to the

(
        self,
        id,
        requester_user,
        permission_type,
        exclude_fields=None,
        include_fields=None,
        from_model_kwargs=None,
        get_by_id_kwargs=None,
    )

Source from the content-addressed store, hash-verified

292 return item
293
294 def _get_one_by_id(
295 self,
296 id,
297 requester_user,
298 permission_type,
299 exclude_fields=None,
300 include_fields=None,
301 from_model_kwargs=None,
302 get_by_id_kwargs=None,
303 ):
304 """
305 :param exclude_fields: A list of object fields to exclude.
306 :type exclude_fields: ``list``
307 :param include_fields: A list of object fields to include.
308 :type include_fields: ``list``
309 :param get_by_id_kwargs: Additional keyword arguments which are passed to the
310 "_get_by_id()" method.
311 :type get_by_id_kwargs: ``dict`` or ``None``
312 """
313
314 instance = self._get_by_id(
315 resource_id=id,
316 exclude_fields=exclude_fields,
317 include_fields=include_fields,
318 **get_by_id_kwargs or {},
319 )
320
321 if permission_type:
322 rbac_utils = get_rbac_backend().get_utils_class()
323 rbac_utils.assert_user_has_resource_db_permission(
324 user_db=requester_user,
325 resource_db=instance,
326 permission_type=permission_type,
327 )
328
329 if not instance:
330 msg = 'Unable to identify resource with id "%s".' % id
331 abort(http_client.NOT_FOUND, msg)
332
333 from_model_kwargs = from_model_kwargs or {}
334 from_model_kwargs.update(self.from_model_kwargs)
335
336 result = self.resource_model_filter(
337 model=self.model,
338 instance=instance,
339 requester_user=requester_user,
340 **from_model_kwargs,
341 )
342
343 if not result:
344 LOG.debug(
345 "Not returning the result because RBAC resource isolation is enabled and "
346 "current user doesn't match the resource user"
347 )
348 raise ResourceAccessDeniedPermissionIsolationError(
349 user_db=requester_user,
350 resource_api_or_db=instance,
351 permission_type=permission_type,

Callers 1

get_oneMethod · 0.45

Calls 8

_get_by_idMethod · 0.95
resource_model_filterMethod · 0.95
get_rbac_backendFunction · 0.90
abortFunction · 0.90
get_utils_classMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected