mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-05-31 10:55:03 +00:00
fix: select_for_update error for out join sql
This commit is contained in:
parent
2a33337963
commit
e40c66c7ed
@ -189,18 +189,15 @@ class SessionViewSet(RecordViewLogMixin, OrgBulkModelViewSet):
|
|||||||
return Response({'msg': 'ok', 'id': activity_log.id})
|
return Response({'msg': 'ok', 'id': activity_log.id})
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = super().get_queryset() \
|
queryset = super().get_queryset()
|
||||||
.prefetch_related('terminal') \
|
if self.request.method in ('GET',):
|
||||||
.annotate(terminal_display=F('terminal__name'))
|
queryset = queryset.prefetch_related('terminal').annotate(terminal_display=F('terminal__name'))
|
||||||
return queryset
|
elif self.request.method in ('PATCH',):
|
||||||
|
# postgres reports an error for statements that use select_for_update for out join
|
||||||
def filter_queryset(self, queryset):
|
# so we need to use select_for_update only for have not prefetch_related and annotate
|
||||||
queryset = super().filter_queryset(queryset)
|
|
||||||
# 解决guacamole更新session时并发导致幽灵会话的问题,暂不处理
|
|
||||||
if self.request.method in ('PATCH',):
|
|
||||||
queryset = queryset.select_for_update()
|
queryset = queryset.select_for_update()
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
if hasattr(self.request.user, 'terminal'):
|
if hasattr(self.request.user, 'terminal'):
|
||||||
serializer.validated_data["terminal"] = self.request.user.terminal
|
serializer.validated_data["terminal"] = self.request.user.terminal
|
||||||
|
Loading…
Reference in New Issue
Block a user