add order apis

This commit is contained in:
behruz-dev
2025-08-18 10:25:10 +05:00
parent 331a79112d
commit b480f97813
7 changed files with 449 additions and 6 deletions

View File

@@ -18,6 +18,7 @@ class Command(BaseCommand):
{'code': 'settings', 'name': 'all settings access'},
{'code': 'product_folder', 'name': 'all access to product folder'},
{'code': 'product', 'name': 'all access to product'},
{'code': 'order', 'name': 'all access to orders'},
]
for perm in permissions:

View File

@@ -0,0 +1,12 @@
import django_filters
from core.apps.orders.models.order import Order
class OrderFilter(django_filters.FilterSet):
class Meta:
model = Order
fields = [
'wherehouse', 'project', 'project_folder'
]

View File

@@ -64,7 +64,8 @@ class OrderCreateSerializer(serializers.Serializer):
project_folder=validated_data.get('project_folder'),
project=validated_data.get('project'),
quantity=validated_data.get('quantity'),
date=validated_data.get('date')
date=validated_data.get('date'),
employee=self.context.get('user'),
)
return order
@@ -81,4 +82,12 @@ class OrderListSerializer(serializers.ModelSerializer):
fields = [
'id', 'product', 'unity', 'quantity', 'project', 'project_folder',
'wherehouse', 'date', 'status', 'employee'
]
class OrderUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = [
'product', 'unity', 'quantity', 'project', 'project_folder', 'wherehouse', 'date',
]

View File

@@ -8,6 +8,8 @@ urlpatterns = [
[
path('list/', order_views.OrderListApiView.as_view()),
path('create/', order_views.OrderCreateApiView.as_view()),
path('<uuid:id>/update/', order_views.OrderUpdateApiView.as_view()),
path('<uuid:id>/delete/', order_views.OrderDeleteApiView.as_view()),
]
)),
]

View File

@@ -1,8 +1,13 @@
from rest_framework import generics, status
from django.shortcuts import get_object_or_404
from rest_framework import generics, status, views, filters
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
from core.apps.orders.serializers import order as serializers
from core.apps.orders.models import Order
from core.apps.orders.filters.order import OrderFilter
from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.shared.paginations.custom import CustomPageNumberPagination
@@ -13,19 +18,43 @@ class OrderListApiView(generics.ListAPIView):
'product', 'unity', 'project', 'project_folder', 'wherehouse'
)
permission_classes = [HasRolePermission]
required_permissions = []
required_permissions = ['order']
pagination_class = CustomPageNumberPagination
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
search_fields = [
'product__name', 'unity__value', 'project_folder__name', 'project__name',
'wherehouse__name', 'date', 'quantity', 'employee__full_name', 'employee__phone_number'
]
filterset_class = [OrderFilter]
class OrderCreateApiView(generics.CreateAPIView):
serializer_class = serializers.OrderCreateSerializer
queryset = Order.objects.all()
permission_classes = [HasRolePermission]
required_permissions = []
required_permissions = ['order']
def get_serializer_context(self):
context = super().get_serializer_context()
context['user'] = self.request.user
return context
class OrderUpdateApiView(generics.UpdateAPIView):
serializer_class = serializers.OrderUpdateSerializer
queryset = Order.objects.all()
permission_classes = [HasRolePermission]
required_permissions = ['order']
lookup_field = 'id'
class OrderDeleteApiView(views.APIView):
permission_classes = [HasRolePermission]
required_permissions = ['order']
def delete(self, request, id):
order = get_object_or_404(Order, id=id)
order.delete()
return Response({"success": True, "message": "Deleted!"}, status=204)