mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
985 B
32 lines
985 B
# -*- coding: utf-8 -*- |
|
# |
|
|
|
from rest_framework import status |
|
from rest_framework.decorators import action |
|
from rest_framework.response import Response |
|
|
|
from orgs.mixins.api import OrgBulkModelViewSet |
|
from ..models import UserGroup, User |
|
from ..serializers import UserGroupSerializer, UserGroupListSerializer |
|
|
|
__all__ = ['UserGroupViewSet'] |
|
|
|
|
|
class UserGroupViewSet(OrgBulkModelViewSet): |
|
model = UserGroup |
|
filterset_fields = ("name",) |
|
search_fields = filterset_fields |
|
serializer_classes = { |
|
'default': UserGroupSerializer, |
|
'list': UserGroupListSerializer, |
|
} |
|
rbac_perms = ( |
|
("add_all_users", "users.add_usergroup"), |
|
) |
|
|
|
@action(methods=['post'], detail=True, url_path='add-all-users') |
|
def add_all_users(self, request, *args, **kwargs): |
|
instance = self.get_object() |
|
users = User.get_org_users().exclude(groups__id=instance.id) |
|
instance.users.add(*users) |
|
return Response(status=status.HTTP_200_OK)
|
|
|