diff --git a/apps/perms/serializers/application/permission.py b/apps/perms/serializers/application/permission.py index c7ebdf769..ae65ea869 100644 --- a/apps/perms/serializers/application/permission.py +++ b/apps/perms/serializers/application/permission.py @@ -5,7 +5,7 @@ from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer -from perms.models import ApplicationPermission +from perms.models import ApplicationPermission, Action from ..base import ActionsField, BasePermissionSerializer __all__ = [ diff --git a/apps/perms/serializers/base.py b/apps/perms/serializers/base.py index 81707dbd1..63cdd8d72 100644 --- a/apps/perms/serializers/base.py +++ b/apps/perms/serializers/base.py @@ -1,6 +1,7 @@ from rest_framework import serializers from perms.models import Action from orgs.mixins.serializers import BulkOrgResourceModelSerializer +from rest_framework.fields import empty __all__ = ['ActionsDisplayField', 'ActionsField', 'BasePermissionSerializer'] @@ -10,6 +11,12 @@ class ActionsField(serializers.MultipleChoiceField): kwargs['choices'] = Action.CHOICES super().__init__(*args, **kwargs) + def run_validation(self, data=empty): + data = super(ActionsField, self).run_validation() + if isinstance(data, list): + data = Action.choices_to_value(value=data) + return data + def to_representation(self, value): return Action.value_to_choices(value)