Projet

Général

Profil

0001-WIP-add-role-creation-api-20706.patch

Paul Marillonnet, 04 janvier 2018 09:25

Télécharger (3,99 ko)

Voir les différences:

Subject: [PATCH] WIP add role creation api (#20706)

 src/authentic2/api_urls.py  |  7 +++++--
 src/authentic2/api_views.py | 29 ++++++++++++++++++++++++++---
 2 files changed, 31 insertions(+), 5 deletions(-)
src/authentic2/api_urls.py
9 9
                           name='a2-api-password-change'),
10 10
                       url(r'^user/$', api_views.user,
11 11
                           name='a2-api-user'),
12
                       url(r'^roles/(?P<role_uuid>[\w+]*)/members/(?P<member_uuid>[^/]+)/$', api_views.roles,
13
                           name='a2-api-role-member'),
12
                       url(r'^roles/(?P<role_uuid>[\w+]*)/members/(?P<member_uuid>[^/]+)/$',
13
                           api_views.role_memberships, name='a2-api-role-member'),
14 14
                       url(r'^check-password/$', api_views.check_password,
15 15
                           name='a2-api-check-password'),
16
                       url(r'^ous/(?P<ou_id_or_ou_slug>[\w+]*)/roles/',
17
                           api_views.roles_in_ou, name='a2-api-role'),
16 18
)
19

  
17 20
urlpatterns += api_views.router.urls
src/authentic2/api_views.py
306 306
    return hash(tuple((at.name, at.required) for at in attributes))
307 307

  
308 308

  
309
class RoleSerializer(serializers.ModelSerializer):
310
    ou = serializers.SlugRelatedField(
311
        queryset=get_ou_model().objects.all(),
312
        slug_field='ou__slug',
313
        required=True, default=get_default_ou)
314

  
315
    class Meta:
316
        model = get_role_model()
317

  
318

  
309 319
class BaseUserSerializer(serializers.ModelSerializer):
310 320
    ou = serializers.SlugRelatedField(
311 321
        queryset=get_ou_model().objects.all(),
......
575 585
        utils.send_email_change_email(user, serializer.validated_data['email'], request=request)
576 586
        return Response({'result': 1})
577 587

  
588
class RolesInOuAPI(ExceptionHandlerMixin, APIView, ModelViewSet):
589

  
590
    def initial(self, request, *args, **kwargs):
591
        super(RolesInOuAPI, self).initial(request, *args, **kwargs)
592
        Role = get_role_model()
593
        try:
594
            self.role = get_object(Role, ou__slug=kwargs['ou_id_or_ou_slug'])
595
        except MultipleObjectsReturned:
596
            self.role = get_object_or_404(Role, ou__id=kwargs['ou_id_or_ou_slug'])
597

  
598
roles_in_ou = RolesInOuAPI.as_view()
599

  
578 600

  
579
class RolesAPI(ExceptionHandlerMixin, APIView):
601
class RoleMembershipsAPI(ExceptionHandlerMixin, APIView):
580 602
    permission_classes = (permissions.IsAuthenticated,)
581 603

  
582 604
    def initial(self, request, *args, **kwargs):
583
        super(RolesAPI, self).initial(request, *args, **kwargs)
605
        super(RoleMembershipsAPI, self).initial(request, *args, **kwargs)
584 606
        Role = get_role_model()
585 607
        User = get_user_model()
586 608
        self.role = get_object_or_404(Role, uuid=kwargs['role_uuid'])
......
601 623
        return Response({'result': 1, 'detail': _('User successfully removed from role')},
602 624
                        status=status.HTTP_200_OK)
603 625

  
604
roles = RolesAPI.as_view()
626
role_memberships = RoleMembershipsAPI.as_view()
605 627

  
606 628

  
607 629
class BaseOrganizationalUnitSerializer(serializers.ModelSerializer):
......
620 642
router = SimpleRouter()
621 643
router.register(r'users', UsersAPI, base_name='a2-api-users')
622 644
router.register(r'ous', OrganizationalUnitAPI, base_name='a2-api-ous')
645
# router.register(r'roles', RolesAPO, base_name='a2-api-roles')
623 646

  
624 647

  
625 648
class CheckPasswordSerializer(serializers.Serializer):
626
-