From 58481733a6b58b1f1ab34628e0d57aa881e0c6f0 Mon Sep 17 00:00:00 2001 From: Paul Marillonnet Date: Thu, 30 Aug 2018 14:51:56 +0200 Subject: [PATCH] WIP include roles in users api (#25645) --- src/authentic2/api_views.py | 9 ++++++++- tests/test_api.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/authentic2/api_views.py b/src/authentic2/api_views.py index b6fa431a..dbe51c9d 100644 --- a/src/authentic2/api_views.py +++ b/src/authentic2/api_views.py @@ -326,6 +326,8 @@ class BaseUserSerializer(serializers.ModelSerializer): def __init__(self, *args, **kwargs): super(BaseUserSerializer, self).__init__(*args, **kwargs) + self.fields['roles'] = RoleCustomField(many=True, read_only=True) + for at in Attribute.objects.all(): if at.name in self.fields: self.fields[at.name].required = at.required @@ -490,6 +492,11 @@ class RoleSerializer(serializers.ModelSerializer): extra_kwargs = {'uuid': {'read_only': True}} +class RoleCustomField(RoleSerializer): + class Meta(RoleSerializer.Meta): + fields = ('uuid', 'name', 'slug',) + + class UsersFilter(FilterSet): class Meta: model = get_user_model() @@ -537,7 +544,7 @@ class ChangeEmailSerializer(serializers.Serializer): class UsersAPI(HookMixin, ExceptionHandlerMixin, ModelViewSet): - ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined'] + ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined', 'roles'] lookup_field = 'uuid' serializer_class = BaseUserSerializer filter_class = UsersFilter diff --git a/tests/test_api.py b/tests/test_api.py index 240b0382..eb7648e6 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -231,7 +231,7 @@ def test_api_users_create(settings, app, api_user): if api_user.is_superuser or api_user.roles.exists(): assert set(['ou', 'id', 'uuid', 'is_staff', 'is_superuser', 'first_name', 'last_name', 'date_joined', 'last_login', 'username', 'password', 'email', 'is_active', - 'title', 'modified', 'email_verified']) == set(resp.json.keys()) + 'title', 'modified', 'email_verified', 'roles']) == set(resp.json.keys()) assert resp.json['first_name'] == payload['first_name'] assert resp.json['last_name'] == payload['last_name'] assert resp.json['email'] == payload['email'] -- 2.19.0.rc2