mirror of https://github.com/jumpserver/jumpserver
fix: 删除用户最近登录的资产接口
parent
bbf3250161
commit
9c3fd59ef4
|
@ -3,7 +3,6 @@
|
|||
import os
|
||||
import tarfile
|
||||
|
||||
from django.db.models import F, Max
|
||||
from django.shortcuts import get_object_or_404, reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.encoding import escape_uri_path
|
||||
|
@ -16,7 +15,6 @@ from rest_framework.permissions import IsAuthenticated
|
|||
from rest_framework import generics
|
||||
|
||||
from common.utils import data_to_json
|
||||
from assets.models import Asset
|
||||
from common.const.http import GET
|
||||
from common.utils import get_logger, get_object_or_none
|
||||
from common.mixins.api import AsyncApiMixin
|
||||
|
@ -30,11 +28,10 @@ from ..utils import find_session_replay_local, download_session_replay
|
|||
from ..models import Session
|
||||
from .. import serializers
|
||||
from terminal.utils import is_session_approver
|
||||
from assets.serializers import AssetSerializer
|
||||
|
||||
__all__ = [
|
||||
'SessionViewSet', 'SessionReplayViewSet', 'SessionJoinValidateAPI',
|
||||
'MySessionAPIView', 'MySessionAssetAPIView',
|
||||
'MySessionAPIView',
|
||||
]
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
@ -51,42 +48,6 @@ class MySessionAPIView(generics.ListAPIView):
|
|||
return qs
|
||||
|
||||
|
||||
class MySessionAssetAPIView(generics.ListAPIView):
|
||||
queryset = Asset.objects.all()
|
||||
permission_classes = (IsAuthenticated, )
|
||||
serializer_class = AssetSerializer
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
with tmp_to_root_org():
|
||||
user = self.request.user
|
||||
|
||||
asset_ids = Session.objects.filter(user_id=user.id).exclude(
|
||||
asset_id='' # xrdp bug 没有提交 asset_id,已修复,但要兼容旧数据
|
||||
).values_list('asset_id').annotate(
|
||||
max_date_start=Max(F('date_start'))
|
||||
).order_by('-max_date_start').values_list('asset_id', flat=True)
|
||||
page = self.paginate_queryset(asset_ids)
|
||||
if page is not None:
|
||||
serializer = self._to_serializer(page)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
serializer = self._to_serializer(asset_ids)
|
||||
return Response(serializer.data)
|
||||
|
||||
def _to_serializer(self, asset_ids):
|
||||
assets_qs = Asset.objects.filter(id__in=list(asset_ids))
|
||||
serializer_cls = self.get_serializer_class()
|
||||
if hasattr(serializer_cls, 'setup_eager_loading'):
|
||||
assets_qs = serializer_cls.setup_eager_loading(assets_qs)
|
||||
|
||||
id_asset_map = {str(asset.id): asset for asset in assets_qs}
|
||||
assets = []
|
||||
for i in asset_ids:
|
||||
assets.append(id_asset_map[i])
|
||||
serializer = self.get_serializer(assets, many=True)
|
||||
return serializer
|
||||
|
||||
|
||||
class SessionViewSet(OrgBulkModelViewSet):
|
||||
model = Session
|
||||
serializer_classes = {
|
||||
|
|
|
@ -24,7 +24,6 @@ router.register(r'session-sharings', api.SessionSharingViewSet, 'session-sharing
|
|||
router.register(r'session-join-records', api.SessionJoinRecordsViewSet, 'session-sharing-record')
|
||||
|
||||
urlpatterns = [
|
||||
path('my-login-assets/', api.MySessionAssetAPIView.as_view(), name='my-login-asset'),
|
||||
path('my-sessions/', api.MySessionAPIView.as_view(), name='my-session'),
|
||||
path('terminal-registrations/', api.TerminalRegistrationApi.as_view(), name='terminal-registration'),
|
||||
path('registration/', api.TerminalRegistrationApi.as_view(), name='registration'),
|
||||
|
|
Loading…
Reference in New Issue