Projet

Général

Profil

0001-WIP-include-roles-in-users-api-25645.patch

Paul Marillonnet, 06 septembre 2018 12:33

Télécharger (2,48 ko)

Voir les différences:

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(-)
src/authentic2/api_views.py
326 326
    def __init__(self, *args, **kwargs):
327 327
        super(BaseUserSerializer, self).__init__(*args, **kwargs)
328 328

  
329
        self.fields['roles'] = RoleCustomField(many=True, read_only=True)
330

  
329 331
        for at in Attribute.objects.all():
330 332
            if at.name in self.fields:
331 333
                self.fields[at.name].required = at.required
......
490 492
        extra_kwargs = {'uuid': {'read_only': True}}
491 493

  
492 494

  
495
class RoleCustomField(RoleSerializer):
496
    class Meta(RoleSerializer.Meta):
497
        fields = ('uuid', 'name', 'slug',)
498

  
499

  
493 500
class UsersFilter(FilterSet):
494 501
    class Meta:
495 502
        model = get_user_model()
......
537 544

  
538 545

  
539 546
class UsersAPI(HookMixin, ExceptionHandlerMixin, ModelViewSet):
540
    ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined']
547
    ordering_fields = ['username', 'first_name', 'last_name', 'modified', 'date_joined', 'roles']
541 548
    lookup_field = 'uuid'
542 549
    serializer_class = BaseUserSerializer
543 550
    filter_class = UsersFilter
tests/test_api.py
231 231
    if api_user.is_superuser or api_user.roles.exists():
232 232
        assert set(['ou', 'id', 'uuid', 'is_staff', 'is_superuser', 'first_name', 'last_name',
233 233
                    'date_joined', 'last_login', 'username', 'password', 'email', 'is_active',
234
                    'title', 'modified', 'email_verified']) == set(resp.json.keys())
234
                    'title', 'modified', 'email_verified', 'roles']) == set(resp.json.keys())
235 235
        assert resp.json['first_name'] == payload['first_name']
236 236
        assert resp.json['last_name'] == payload['last_name']
237 237
        assert resp.json['email'] == payload['email']
238
-