PermissionField

PermissionField allow you to retrieve permissions for instance.

Usage

Define permission field in serializer:

from rest_framework.serializers import ModelSerializer

class NewsSerializer(ModelSerializer):
    permissions = PermissionField(actions=('update', 'publish'))

    class Meta:
        model = News
        fields = ('permissions',)

Example output:

{
  "permissions": {
    "update": {
      "allow": true,
      "messages": null
    },
    "publish": {
      "allow": false,
      "messages": [
        "Already published"
      ]
    }
  }
}

Children

If you need to serialize children’s permissions, you can use the children argument. For example, you may need to know that you can create some related instances.

from permission_manager_drf import PermissionFieldChild

class NewsSerializer(ModelSerializer):
    permissions = PermissionField(
        actions=('update', 'publish'),
        children=[
            PermissionFieldChild(
                name='image',
                manager=ImagePermissionManager,
                actions=['create'],
            )
        ]
    )
{
  "update": {
    "allow": false,
    "messages": null
  },
  "publish": {
    "allow": false,
    "messages": null
  },
  "image": {
    "create": {
      "allow": false,
      "messages": [
        "Parent is not editable"
      ]
    }
  }
}