mirror of https://github.com/jumpserver/jumpserver
feat: 用户组绑定所有用户
parent
ac3415d95c
commit
fd7e821f11
|
@ -1,8 +1,11 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- 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 orgs.mixins.api import OrgBulkModelViewSet
|
||||||
from ..models import UserGroup
|
from ..models import UserGroup, User
|
||||||
from ..serializers import UserGroupSerializer
|
from ..serializers import UserGroupSerializer
|
||||||
|
|
||||||
__all__ = ['UserGroupViewSet']
|
__all__ = ['UserGroupViewSet']
|
||||||
|
@ -14,3 +17,13 @@ class UserGroupViewSet(OrgBulkModelViewSet):
|
||||||
search_fields = filterset_fields
|
search_fields = filterset_fields
|
||||||
serializer_class = UserGroupSerializer
|
serializer_class = UserGroupSerializer
|
||||||
ordering = ('name',)
|
ordering = ('name',)
|
||||||
|
rbac_perms = (
|
||||||
|
("add_all_users", "users.change_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)
|
||||||
|
|
|
@ -11,12 +11,17 @@ class UserFilter(BaseFilterSet):
|
||||||
system_roles = filters.CharFilter(method='filter_system_roles')
|
system_roles = filters.CharFilter(method='filter_system_roles')
|
||||||
org_roles = filters.CharFilter(method='filter_org_roles')
|
org_roles = filters.CharFilter(method='filter_org_roles')
|
||||||
groups = filters.CharFilter(field_name="groups__name", lookup_expr='exact')
|
groups = filters.CharFilter(field_name="groups__name", lookup_expr='exact')
|
||||||
|
group_id = filters.CharFilter(field_name="groups__id", lookup_expr='exact')
|
||||||
|
exclude_group_id = filters.CharFilter(
|
||||||
|
field_name="groups__id", lookup_expr='exact', exclude=True
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = (
|
fields = (
|
||||||
'id', 'username', 'email', 'name', 'groups', 'source',
|
'id', 'username', 'email', 'name',
|
||||||
'org_roles', 'system_roles', 'is_active',
|
'groups', 'group_id', 'exclude_group_id',
|
||||||
|
'source', 'org_roles', 'system_roles', 'is_active',
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue