add: add folder detail api
This commit is contained in:
@@ -26,6 +26,14 @@ class FolderSerializer(serializers.ModelSerializer):
|
|||||||
return obj.products.count()
|
return obj.products.count()
|
||||||
|
|
||||||
|
|
||||||
|
class FolderDetailSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Folder
|
||||||
|
fields = [
|
||||||
|
'id', 'name'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class SubFolderSerializer(serializers.ModelSerializer):
|
class SubFolderSerializer(serializers.ModelSerializer):
|
||||||
product_count = serializers.SerializerMethodField(method_name='get_product_count')
|
product_count = serializers.SerializerMethodField(method_name='get_product_count')
|
||||||
|
|
||||||
@@ -48,4 +56,12 @@ class SubFolderSerializer(serializers.ModelSerializer):
|
|||||||
return instance
|
return instance
|
||||||
|
|
||||||
def get_product_count(self, obj):
|
def get_product_count(self, obj):
|
||||||
return obj.products.count()
|
return obj.products.count()
|
||||||
|
|
||||||
|
|
||||||
|
class SubFolderDetailSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = SubFolder
|
||||||
|
fields = [
|
||||||
|
'id', 'name'
|
||||||
|
]
|
||||||
@@ -29,6 +29,7 @@ urlpatterns = [
|
|||||||
path('<uuid:id>/update/', folder_views.FolderUdateApiView.as_view()),
|
path('<uuid:id>/update/', folder_views.FolderUdateApiView.as_view()),
|
||||||
path('<uuid:id>/delete/', folder_views.FolderDeleteApiView.as_view()),
|
path('<uuid:id>/delete/', folder_views.FolderDeleteApiView.as_view()),
|
||||||
path('<uuid:folder_id>/products/', folder_views.FolderProductListApiView.as_view()),
|
path('<uuid:folder_id>/products/', folder_views.FolderProductListApiView.as_view()),
|
||||||
|
path('<uuid:id>/', folder_views.FolderDetailApiView.as_view()),
|
||||||
path('sub_folder/', include(
|
path('sub_folder/', include(
|
||||||
[
|
[
|
||||||
path('create/', folder_views.SubFolderCreateApiView.as_view()),
|
path('create/', folder_views.SubFolderCreateApiView.as_view()),
|
||||||
@@ -36,6 +37,7 @@ urlpatterns = [
|
|||||||
path('<uuid:id>/delete/', folder_views.SubFolderDeleteApiView.as_view()),
|
path('<uuid:id>/delete/', folder_views.SubFolderDeleteApiView.as_view()),
|
||||||
path('<uuid:id>/update/', folder_views.SubFolderUpdateApiView.as_view()),
|
path('<uuid:id>/update/', folder_views.SubFolderUpdateApiView.as_view()),
|
||||||
path("<uuid:sub_folder_id>/products/", folder_views.SubFolderProductListApiView.as_view()),
|
path("<uuid:sub_folder_id>/products/", folder_views.SubFolderProductListApiView.as_view()),
|
||||||
|
path('<uuid:id>/', folder_views.SubFolderDetailApiView.as_view()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from django.shortcuts import get_object_or_404
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import generics, views, filters
|
from rest_framework import generics, views, filters
|
||||||
|
|
||||||
from core.apps.products.serializers.folder import FolderSerializer, SubFolderSerializer
|
from core.apps.products.serializers import folder as serializers
|
||||||
from core.apps.products.models import Folder, SubFolder, Product
|
from core.apps.products.models import Folder, SubFolder, Product
|
||||||
from core.apps.products.serializers.product import ProductListSerializer
|
from core.apps.products.serializers.product import ProductListSerializer
|
||||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||||
@@ -11,14 +11,22 @@ from core.apps.shared.paginations.custom import CustomPageNumberPagination
|
|||||||
|
|
||||||
|
|
||||||
class FolderCreateApiView(generics.CreateAPIView):
|
class FolderCreateApiView(generics.CreateAPIView):
|
||||||
serializer_class = FolderSerializer
|
serializer_class = serializers.FolderSerializer
|
||||||
queryset = Folder.objects.all()
|
queryset = Folder.objects.all()
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
|
|
||||||
|
|
||||||
|
class FolderDetailApiView(generics.RetrieveAPIView):
|
||||||
|
serializer_class = serializers.FolderDetailSerializer
|
||||||
|
queryset = Folder.objects.all()
|
||||||
|
permission_classes = [HasRolePermission]
|
||||||
|
required_permissions = ['product_folder']
|
||||||
|
lookup_field = 'id'
|
||||||
|
|
||||||
|
|
||||||
class FolderListApiView(generics.ListAPIView):
|
class FolderListApiView(generics.ListAPIView):
|
||||||
serializer_class = FolderSerializer
|
serializer_class = serializers.FolderSerializer
|
||||||
queryset = Folder.objects.all()
|
queryset = Folder.objects.all()
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
@@ -26,16 +34,15 @@ class FolderListApiView(generics.ListAPIView):
|
|||||||
|
|
||||||
|
|
||||||
class FolderUdateApiView(generics.UpdateAPIView):
|
class FolderUdateApiView(generics.UpdateAPIView):
|
||||||
serializer_class = FolderSerializer
|
serializer_class = serializers.FolderSerializer
|
||||||
queryset = Folder.objects.all()
|
queryset = Folder.objects.all()
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class FolderDeleteApiView(generics.DestroyAPIView):
|
class FolderDeleteApiView(generics.DestroyAPIView):
|
||||||
serializer_class = FolderSerializer
|
serializer_class = serializers.FolderSerializer
|
||||||
queryset = Folder.objects.all()
|
queryset = Folder.objects.all()
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
@@ -62,7 +69,7 @@ class FolderProductListApiView(generics.GenericAPIView):
|
|||||||
|
|
||||||
|
|
||||||
class SubFolderCreateApiView(generics.CreateAPIView):
|
class SubFolderCreateApiView(generics.CreateAPIView):
|
||||||
serializer_class = SubFolderSerializer
|
serializer_class = serializers.SubFolderSerializer
|
||||||
queryset = SubFolder.objects.all()
|
queryset = SubFolder.objects.all()
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
@@ -76,12 +83,12 @@ class SubFolderListByFolderIdApiView(views.APIView):
|
|||||||
def get(self, request, folder_id):
|
def get(self, request, folder_id):
|
||||||
folder = get_object_or_404(Folder, id=folder_id)
|
folder = get_object_or_404(Folder, id=folder_id)
|
||||||
sub_folders = SubFolder.objects.filter(folder=folder)
|
sub_folders = SubFolder.objects.filter(folder=folder)
|
||||||
serializer = SubFolderSerializer(sub_folders, many=True)
|
serializer = serializers.SubFolderSerializer(sub_folders, many=True)
|
||||||
return Response(serializer.data, status=200)
|
return Response(serializer.data, status=200)
|
||||||
|
|
||||||
|
|
||||||
class SubFolderUpdateApiView(generics.UpdateAPIView):
|
class SubFolderUpdateApiView(generics.UpdateAPIView):
|
||||||
serializer_class = SubFolderSerializer
|
serializer_class = serializers.SubFolderSerializer
|
||||||
queryset = SubFolder.objects.all()
|
queryset = SubFolder.objects.all()
|
||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
@@ -89,7 +96,7 @@ class SubFolderUpdateApiView(generics.UpdateAPIView):
|
|||||||
|
|
||||||
|
|
||||||
class SubFolderDeleteApiView(generics.DestroyAPIView):
|
class SubFolderDeleteApiView(generics.DestroyAPIView):
|
||||||
serializer_class = SubFolderSerializer
|
serializer_class = serializers.SubFolderSerializer
|
||||||
queryset = SubFolder.objects.all()
|
queryset = SubFolder.objects.all()
|
||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
@@ -109,4 +116,11 @@ class SubFolderProductListApiView(generics.GenericAPIView):
|
|||||||
data = self.paginate_queryset(products)
|
data = self.paginate_queryset(products)
|
||||||
serializer = self.serializer_class(data, many=True)
|
serializer = self.serializer_class(data, many=True)
|
||||||
return self.get_paginated_response(serializer.data)
|
return self.get_paginated_response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
class SubFolderDetailApiView(generics.RetrieveAPIView):
|
||||||
|
serializer_class = serializers.SubFolderDetailSerializer
|
||||||
|
queryset = SubFolder.objects.all()
|
||||||
|
permission_classes = [HasRolePermission]
|
||||||
|
required_permissions = ['product', 'product_folder']
|
||||||
|
lookup_field = 'id'
|
||||||
Reference in New Issue
Block a user