---
url: "https://vueda.dev/v3/reference/api/py/vueda.core.permissions/ObjectPermissions.md"
title: "ObjectPermissions"
---

# ObjectPermissions

## Overview

Extends DjangoObjectPermissions to support state permissions and CRUD naming conventions.
It sets the 'view_action' in permission checks to determine required permissions for views
and objects based on the current action in the view.

## `get_required_object_permissions` {#get_required_object_permissions}

Allow dynamic permissions based on the view action, for callables in perms_map, for object permissions.

### Signature {#get_required_object_permissions-signature}

`get_required_object_permissions(self, method, model_cls)`

#### Parameters {#get_required_object_permissions-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| self |  | yes |  |  |
| <span id="get_required_object_permissions-param-method">method</span> |  | yes |  |  |
| <span id="get_required_object_permissions-param-model_cls">model_cls</span> |  | yes |  |  |

#### Returns {#get_required_object_permissions-returns}

`list[str]`

### Source {#get_required_object_permissions-source}

`server/vueda/core/permissions.py:206`

## `get_required_permissions` {#get_required_permissions}

Allow dynamic permissions based on the view action, for callables in perms_map.

### Signature {#get_required_permissions-signature}

`get_required_permissions(self, method, model_cls)`

#### Parameters {#get_required_permissions-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| self |  | yes |  |  |
| <span id="get_required_permissions-param-method">method</span> |  | yes |  |  |
| <span id="get_required_permissions-param-model_cls">model_cls</span> |  | yes |  |  |

#### Returns {#get_required_permissions-returns}

`list[str]`

### Source {#get_required_permissions-source}

`server/vueda/core/permissions.py:194`

## `has_object_permission` {#has_object_permission}

Records the current view action then delegates to DjangoObjectPermissions.

### Signature {#has_object_permission-signature}

`has_object_permission(self, request, view, obj)`

#### Parameters {#has_object_permission-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| self |  | yes |  |  |
| <span id="has_object_permission-param-request">request</span> |  | yes |  |  |
| <span id="has_object_permission-param-view">view</span> |  | yes |  |  |
| <span id="has_object_permission-param-obj">obj</span> |  | yes |  |  |

#### Returns {#has_object_permission-returns}

`bool`

### Source {#has_object_permission-source}

`server/vueda/core/permissions.py:188`

## `has_permission` {#has_permission}

Defer a model-level denial only when a matching state grant can be decided later.

Object-scoped actions defer to ``has_object_permission``. Framework list actions defer
to their workflow-aware queryset filter. Collection writes, including create, retain the
model-level result because no existing object supplies a workflow state.

### Signature {#has_permission-signature}

`has_permission(self, request, view)`

#### Parameters {#has_permission-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| self |  | yes |  |  |
| <span id="has_permission-param-request">request</span> |  | yes |  |  |
| <span id="has_permission-param-view">view</span> |  | yes |  |  |

#### Returns {#has_permission-returns}

`bool`

### Source {#has_permission-source}

`server/vueda/core/permissions.py:172`

## `object_permission_actions` {#object_permission_actions}

## `perms_map` {#perms_map}

## `view_action` {#view_action}

## Source

`server/vueda/core/permissions.py:144`
