add order apis
This commit is contained in:
@@ -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:
|
||||
|
||||
12
core/apps/orders/filters/order.py
Normal file
12
core/apps/orders/filters/order.py
Normal 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'
|
||||
]
|
||||
|
||||
@@ -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',
|
||||
]
|
||||
@@ -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()),
|
||||
]
|
||||
)),
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user