mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-16 00:10:55 +00:00
perf: change favorite asset, one asset only in one folder
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from rest_framework_bulk.generics import BulkModelViewSet
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
|
||||
from common.permissions import IsValidUser
|
||||
from orgs.utils import tmp_to_root_org
|
||||
@@ -23,7 +26,7 @@ class FavoriteFolderViewSet(BulkModelViewSet):
|
||||
return FavoriteFolder.objects.filter(user=self.request.user)
|
||||
|
||||
|
||||
class FavoriteAssetViewSet(BulkModelViewSet):
|
||||
class FavoriteAssetViewSet(ModelViewSet):
|
||||
serializer_class = FavoriteAssetSerializer
|
||||
permission_classes = (IsValidUser,)
|
||||
filterset_fields = ['asset', 'folder']
|
||||
@@ -33,6 +36,22 @@ class FavoriteAssetViewSet(BulkModelViewSet):
|
||||
with tmp_to_root_org():
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
return super().update(request, *args, **kwargs)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
asset_id = request.data.get('asset')
|
||||
instance = FavoriteAsset.objects.filter(user=request.user, asset_id=asset_id).first()
|
||||
|
||||
if instance:
|
||||
serializer = self.get_serializer(instance, data=request.data, partial=True)
|
||||
else:
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = FavoriteAsset.objects.filter(
|
||||
user=self.request.user
|
||||
|
||||
@@ -39,6 +39,6 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='favoriteasset',
|
||||
unique_together={('user', 'asset', 'folder')},
|
||||
unique_together={('user', 'asset',)},
|
||||
),
|
||||
]
|
||||
|
||||
@@ -34,7 +34,7 @@ class FavoriteAsset(JMSBaseModel):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('user', 'asset', 'folder')
|
||||
unique_together = ('user', 'asset')
|
||||
verbose_name = _("Favorite asset")
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user