You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import logging
from django.db.models import Q
from django.utils.decorators import method_decorator
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
from rest_framework import viewsets
from basic_info.models import WarehouseModel
from ERP_5.apps.basic_info.serializer.warehouse_serializer import WarehouseSerializer, WarehouseSearchSerializer
from ERP_5.utils.paginations import GlobalPagination
from ERP_5.utils.base_views import MultipleDestroyMixin, MultipleOpenMixin
logger = logging.getLogger('my')
param1 = openapi.Parameter(name='name', type=openapi.TYPE_STRING, description="名称的关键字", in_=openapi.IN_QUERY)
param2 = openapi.Parameter(name='remark', type=openapi.TYPE_STRING, description="备注关键字", in_=openapi.IN_QUERY)
@method_decorator(name='list', decorator=swagger_auto_schema(
manual_parameters=[param1, param2],
operation_description="仓库的搜索过滤")
)
class WarehouseView(viewsets.ModelViewSet, MultipleDestroyMixin, MultipleOpenMixin):
"""
create:
仓库信息--新增
仓库信息新增, status: 201(成功), return: 新增仓库信息信息
destroy:
仓库信息--删除
仓库信息删除, status: 204(成功), return: None
multiple_delete:
仓库信息--批量删除,必传json参数ids=[1,2,3,4...]
仓库信息批量删除, status: 204(成功), return: None
multiple_open:
仓库信息--批量启用或者禁用,必传(json)参数ids=[1,2,3,4...](列表中可以只有一个)is_open=1/0
{
"ids":[1,2],
"is_open":"0"
}
is_open=1表示禁用is_open=0表示启用
仓库信息批量启用或者禁用, status: 204(成功), return: None
update:
仓库信息--修改,一般用于修改多个属性
仓库信息修改, status: 200(成功), return: 修改后的仓库信息信息
partial_update:
仓库信息--局部修改(一般修改一个属性),可以传参任意属性的值,服务器会修改指定的属性值
仓库信息局部修改, status: 200(成功), return: 修改后的仓库信息信息
list:
仓库信息--获取分页列表可选json参数:name(名称)remark(描述关键字)
{
"name":"长沙",
"remark":"xxxx"
}
仓库信息列表信息, status: 200(成功), return: 仓库信息信息列表
retrieve:
查询某一个仓库信息
查询指定ID的仓库信息, status: 200(成功), return: 用户仓库信息
"""
queryset = WarehouseModel.objects.all()
serializer_class = WarehouseSerializer
pagination_class = GlobalPagination
def get_queryset(self):
if self.action == 'list': # 过滤查询
# 获取请求参数(在json中)namephone, mobile
name = self.request.data.get('name', None)
remark = self.request.data.get('remark', None)
query = Q()
if name:
query.add(Q(name__contains=name), 'AND') # 多条件组合
if remark:
query.add(Q(remark__contains=remark), 'AND')
return WarehouseModel.objects.filter(query).all()
else:
return WarehouseModel.objects.all()
def get_serializer_class(self):
if self.action == 'list': # 过滤查询 ,设置新的序列化器
return WarehouseSearchSerializer
else:
return WarehouseSerializer