: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,
)
| 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, |
no test coverage detected