diff --git a/apps/users/api.py b/apps/users/api.py index 2f683dcb6..c90bde910 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -4,9 +4,10 @@ import logging from rest_framework import generics +from rest_framework_bulk import ListBulkCreateUpdateDestroyAPIView from .serializers import UserSerializer, UserGroupSerializer, UserAttributeSerializer, UserGroupEditSerializer, \ - GroupEditSerializer, UserPKUpdateSerializer + GroupEditSerializer, UserPKUpdateSerializer, UserBulkUpdateSerializer from .models import User, UserGroup @@ -92,3 +93,8 @@ class UserUpdatePKApi(generics.UpdateAPIView): class GroupDeleteApi(generics.DestroyAPIView): queryset = UserGroup.objects.all() serializer_class = GroupEditSerializer + + +class UserBulkUpdateApi(ListBulkCreateUpdateDestroyAPIView): + queryset = User.objects.all() + serializer_class = UserBulkUpdateSerializer diff --git a/apps/users/serializers.py b/apps/users/serializers.py index 8e117a90d..9c8000cd3 100644 --- a/apps/users/serializers.py +++ b/apps/users/serializers.py @@ -3,6 +3,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers +from rest_framework_bulk import BulkListSerializer, BulkSerializerMixin from .models import User, UserGroup @@ -67,3 +68,10 @@ class UserPKUpdateSerializer(serializers.ModelSerializer): print e raise serializers.ValidationError(_('Not a valid ssh public key')) return value + + +class UserBulkUpdateSerializer(BulkSerializerMixin, serializers.ModelSerializer): + + class Meta(object): + model = User + list_serializer_class = BulkListSerializer diff --git a/apps/users/templates/users/user_list.html b/apps/users/templates/users/user_list.html index 2017510ea..189808878 100644 --- a/apps/users/templates/users/user_list.html +++ b/apps/users/templates/users/user_list.html @@ -22,7 +22,7 @@ {% for user in object_list %} - + @@ -50,23 +50,38 @@ {% endblock %} {% block content_bottom_left %} - +{% endblock %} +{% block custom_foot_js %} + {% endblock %} - diff --git a/apps/users/urls.py b/apps/users/urls.py index e4ccce63e..59d96c0b7 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -36,6 +36,7 @@ urlpatterns = [ urlpatterns += [ url(r'^v1/users$', api.UserListAddApi.as_view(), name='user-list-api'), + url(r'^v1/users/update/$', api.UserBulkUpdateApi.as_view(), name='user-bulk-update-api'), url(r'^v1/users/(?P[0-9]+)$', api.UserDetailDeleteUpdateApi.as_view(), name='user-detail-api'), url(r'^v1/users/(?P[0-9]+)/patch$',