70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
from apps.sam.serializers import ContractCreateUpdateSerializer, ContractSerializer, CustomerCreateUpdateSerializer, CustomerSerializer, OrderCreateUpdateSerializer, OrderSerializer
|
|
from apps.sam.models import Contract, Customer, Order
|
|
from rest_framework.viewsets import ModelViewSet
|
|
from apps.system.mixins import CreateUpdateCustomMixin
|
|
from django.shortcuts import render
|
|
from rest_framework.decorators import action
|
|
from django.db.models import F
|
|
from rest_framework.response import Response
|
|
# Create your views here.
|
|
class CustomerViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
|
"""
|
|
客户-增删改查
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = Customer.objects.all()
|
|
serializer_class = CustomerSerializer
|
|
search_fields = ['name', 'contact']
|
|
filterset_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action in ['create', 'update']:
|
|
return CustomerCreateUpdateSerializer
|
|
return CustomerSerializer
|
|
|
|
|
|
class ContractViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
|
"""
|
|
合同-增删改查
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = Contract.objects.select_related('customer').all()
|
|
serializer_class = ContractSerializer
|
|
search_fields = ['name']
|
|
filterset_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action in ['create', 'update']:
|
|
return ContractCreateUpdateSerializer
|
|
return ContractSerializer
|
|
|
|
class OrderViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
|
"""
|
|
订单-增删改查
|
|
"""
|
|
perms_map = {'*': '*'}
|
|
queryset = Order.objects.select_related('contract', 'customer').all()
|
|
serializer_class = OrderSerializer
|
|
search_fields = ['number', 'product']
|
|
filterset_fields = []
|
|
ordering_fields = ['create_time']
|
|
ordering = ['-create_time']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action in ['create', 'update']:
|
|
return OrderCreateUpdateSerializer
|
|
return OrderSerializer
|
|
|
|
@action(methods=['get'], detail=True, perms_map={'get':'*'})
|
|
def toplan(self, request, pk=None):
|
|
queryset = Order.objects.filter(count__gt=F('planed_count'))
|
|
page = self.paginate_queryset(queryset)
|
|
if page is not None:
|
|
serializer = self.get_serializer(page, many=True)
|
|
return self.get_paginated_response(serializer.data)
|
|
serializer = self.get_serializer(queryset, many=True)
|
|
return Response(serializer.data) |