add folder product list apis
This commit is contained in:
@@ -25,12 +25,14 @@ urlpatterns = [
|
|||||||
path('list/', folder_views.FolderListApiView.as_view()),
|
path('list/', folder_views.FolderListApiView.as_view()),
|
||||||
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('sub_folder/', include(
|
path('sub_folder/', include(
|
||||||
[
|
[
|
||||||
path('create/', folder_views.SubFolderCreateApiView.as_view()),
|
path('create/', folder_views.SubFolderCreateApiView.as_view()),
|
||||||
path('<uuid:folder_id>/list/', folder_views.SubFolderListByFolderIdApiView.as_view()),
|
path('<uuid:folder_id>/list/', folder_views.SubFolderListByFolderIdApiView.as_view()),
|
||||||
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()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ from rest_framework.response import Response
|
|||||||
from rest_framework import generics, views
|
from rest_framework import generics, views
|
||||||
|
|
||||||
from core.apps.products.serializers.folder import FolderSerializer, SubFolderSerializer
|
from core.apps.products.serializers.folder import FolderSerializer, SubFolderSerializer
|
||||||
from core.apps.products.models.folder import Folder, SubFolder
|
from core.apps.products.models import Folder, SubFolder, Product
|
||||||
|
from core.apps.products.serializers.product import ProductListSerializer
|
||||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||||
|
from core.apps.shared.paginations.custom import CustomPageNumberPagination
|
||||||
|
|
||||||
|
|
||||||
class FolderCreateApiView(generics.CreateAPIView):
|
class FolderCreateApiView(generics.CreateAPIView):
|
||||||
@@ -40,6 +42,23 @@ class FolderDeleteApiView(generics.DestroyAPIView):
|
|||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class FolderProductListApiView(generics.GenericAPIView):
|
||||||
|
pagination_class = CustomPageNumberPagination
|
||||||
|
permission_classes = [HasRolePermission]
|
||||||
|
required_permissions = ['product', 'product_folder']
|
||||||
|
queryset = Product.objects.all()
|
||||||
|
serializer_class = ProductListSerializer
|
||||||
|
|
||||||
|
def get(self, request, folder_id):
|
||||||
|
folder = get_object_or_404(Folder, id=folder_id)
|
||||||
|
products = Product.objects.filter(folder=folder)
|
||||||
|
data = self.paginate_queryset(products)
|
||||||
|
serializer = self.serializer_class(data, many=True)
|
||||||
|
return self.get_paginated_response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
class SubFolderCreateApiView(generics.CreateAPIView):
|
class SubFolderCreateApiView(generics.CreateAPIView):
|
||||||
serializer_class = SubFolderSerializer
|
serializer_class = SubFolderSerializer
|
||||||
queryset = SubFolder.objects.all()
|
queryset = SubFolder.objects.all()
|
||||||
@@ -74,3 +93,18 @@ class SubFolderDeleteApiView(generics.DestroyAPIView):
|
|||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
required_permissions = ['product_folder']
|
required_permissions = ['product_folder']
|
||||||
|
|
||||||
|
|
||||||
|
class SubFolderProductListApiView(generics.GenericAPIView):
|
||||||
|
pagination_class = CustomPageNumberPagination
|
||||||
|
permission_classes = [HasRolePermission]
|
||||||
|
required_permissions = ['product', 'product_folder']
|
||||||
|
queryset = Product.objects.all()
|
||||||
|
serializer_class = ProductListSerializer
|
||||||
|
|
||||||
|
def get(self, request, sub_folder_id):
|
||||||
|
sub_folder = get_object_or_404(SubFolder, id=sub_folder_id)
|
||||||
|
products = Product.objects.filter(sub_folder=sub_folder)
|
||||||
|
data = self.paginate_queryset(products)
|
||||||
|
serializer = self.serializer_class(data, many=True)
|
||||||
|
return self.get_paginated_response(serializer.data)
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@ from django.shortcuts import get_object_or_404
|
|||||||
from rest_framework import generics, views
|
from rest_framework import generics, views
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from core.apps.products.models.product import Product
|
from core.apps.products.models import Product
|
||||||
from core.apps.products.serializers import product as serializers
|
from core.apps.products.serializers import product as serializers
|
||||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||||
from core.apps.shared.paginations.custom import CustomPageNumberPagination
|
from core.apps.shared.paginations.custom import CustomPageNumberPagination
|
||||||
|
|||||||
Reference in New Issue
Block a user