Commit 62689b24 authored by ibuler's avatar ibuler

Merge branch 'bugfix' of github.com:jumpserver/jumpserver into bugfix

parents 6f570bcb b5962a09
...@@ -38,12 +38,12 @@ class SessionViewSet(OrgBulkModelViewSet): ...@@ -38,12 +38,12 @@ class SessionViewSet(OrgBulkModelViewSet):
('date_start', ('date_from', 'date_to')) ('date_start', ('date_from', 'date_to'))
] ]
def get_object(self): def filter_queryset(self, queryset):
queryset = super().filter_queryset(queryset)
# 解决guacamole更新session时并发导致幽灵会话的问题 # 解决guacamole更新session时并发导致幽灵会话的问题
obj = super().get_object() if self.request.method in ('PATCH',):
if self.request.method in ('PATCH', ): queryset = queryset.select_for_update()
obj = obj.select_for_update() return queryset
return obj
@property @property
def filter_backends(self): def filter_backends(self):
......
...@@ -5,8 +5,11 @@ from rest_framework import generics ...@@ -5,8 +5,11 @@ from rest_framework import generics
from rest_framework_bulk import BulkModelViewSet from rest_framework_bulk import BulkModelViewSet
from rest_framework.pagination import LimitOffsetPagination from rest_framework.pagination import LimitOffsetPagination
from ..serializers import UserGroupSerializer, \ from ..serializers import (
UserGroupUpdateMemberSerializer UserGroupSerializer,
UserGroupListSerializer,
UserGroupUpdateMemberSerializer,
)
from ..models import UserGroup from ..models import UserGroup
from common.permissions import IsOrgAdmin from common.permissions import IsOrgAdmin
from common.mixins import IDInCacheFilterMixin from common.mixins import IDInCacheFilterMixin
...@@ -23,6 +26,12 @@ class UserGroupViewSet(IDInCacheFilterMixin, BulkModelViewSet): ...@@ -23,6 +26,12 @@ class UserGroupViewSet(IDInCacheFilterMixin, BulkModelViewSet):
permission_classes = (IsOrgAdmin,) permission_classes = (IsOrgAdmin,)
pagination_class = LimitOffsetPagination pagination_class = LimitOffsetPagination
def get_serializer_class(self):
if self.action in ("list", 'retrieve') and \
self.request.query_params.get("display"):
return UserGroupListSerializer
return self.serializer_class
class UserGroupUpdateUserApi(generics.RetrieveUpdateAPIView): class UserGroupUpdateUserApi(generics.RetrieveUpdateAPIView):
queryset = UserGroup.objects.all() queryset = UserGroup.objects.all()
......
...@@ -6,10 +6,19 @@ from rest_framework import serializers ...@@ -6,10 +6,19 @@ from rest_framework import serializers
from common.utils import get_signer, validate_ssh_public_key from common.utils import get_signer, validate_ssh_public_key
from common.mixins import BulkSerializerMixin from common.mixins import BulkSerializerMixin
from common.fields import StringManyToManyField
from common.serializers import AdaptedBulkListSerializer from common.serializers import AdaptedBulkListSerializer
from orgs.mixins import BulkOrgResourceModelSerializer from orgs.mixins import BulkOrgResourceModelSerializer
from ..models import User, UserGroup from ..models import User, UserGroup
__all__ = [
'UserSerializer', 'UserPKUpdateSerializer', 'UserUpdateGroupSerializer',
'UserGroupSerializer', 'UserGroupListSerializer',
'UserGroupUpdateMemberSerializer', 'ChangeUserPasswordSerializer'
]
signer = get_signer() signer = get_signer()
...@@ -108,6 +117,10 @@ class UserGroupSerializer(BulkOrgResourceModelSerializer): ...@@ -108,6 +117,10 @@ class UserGroupSerializer(BulkOrgResourceModelSerializer):
} }
class UserGroupListSerializer(UserGroupSerializer):
users = StringManyToManyField(many=True, read_only=True)
class UserGroupUpdateMemberSerializer(serializers.ModelSerializer): class UserGroupUpdateMemberSerializer(serializers.ModelSerializer):
users = serializers.PrimaryKeyRelatedField(many=True, queryset=User.objects.all()) users = serializers.PrimaryKeyRelatedField(many=True, queryset=User.objects.all())
......
...@@ -79,7 +79,7 @@ function initTable() { ...@@ -79,7 +79,7 @@ function initTable() {
} }
}} }}
], ],
ajax_url: '{% url "api-users:user-group-list" %}', ajax_url: '{% url "api-users:user-group-list" %}?display=1',
columns: [{data: function(){return ""}}, {data: "name" }, {data: "users"}, columns: [{data: function(){return ""}}, {data: "name" }, {data: "users"},
{data: "comment"}, {data: "id" }], {data: "comment"}, {data: "id" }],
order: [], order: [],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment