from django_filters import FilterSet, NumberFilter, CharFilter from .models import ContainerListModel,ContainerDetailModel,ContainerOperationModel,TaskModel,ContainerWCSModel,ContainerDetailLogModel from django_filters import rest_framework as filters class ContainerDetailLogFilter(filters.FilterSet): goods_code = filters.CharFilter(field_name='container_detail__goods_code', lookup_expr='exact') goods_code__icontains = filters.CharFilter(field_name='container_detail__goods_code', lookup_expr='icontains') container_code = filters.CharFilter(field_name='container_detail__container__container_code', lookup_expr='exact') batch = filters.CharFilter(field_name='container_detail__batch__bound_number', lookup_expr='exact') batch__icontains = filters.CharFilter(field_name='container_detail__batch__bound_number', lookup_expr='icontains') class Meta: model = ContainerDetailLogModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "container_detail": ['exact'], "log_type": ['exact', 'icontains'], "old_goods_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "old_goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "old_status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "new_goods_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "new_goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "new_status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "creater": ['exact', 'icontains'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], } class ContainerListFilter(FilterSet): class Meta: model = ContainerListModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "container_code": ['exact', 'icontains'], "current_location": ['exact', 'icontains'], "status": ['exact', 'icontains'], "last_operation": ['exact', 'icontains'], } class ContainerDetailFilter(FilterSet): class Meta: model = ContainerDetailModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "month": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "container" : ['exact'], "batch": ['exact'], "goods_code": ['exact', 'icontains'], "goods_desc": ['exact', 'icontains'], "goods_qty": ['exact', 'icontains'], "goods_weight": ['exact', 'icontains'], "status": ['exact', 'lte','icontains'], "creater": ['exact', 'icontains'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], } class ContainerOperationFilter(FilterSet): class Meta: model = ContainerOperationModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "month": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "container" : ['exact'], "operation_type": ['exact', 'icontains'], "batch": ['exact'], "goods_code" : ['exact', 'icontains'], "goods_desc": ['exact', 'icontains'], "goods_qty": ['exact', 'icontains'], "goods_weight": ['exact', 'icontains'], "operator": ['exact', 'icontains'], "timestamp": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "from_location": ['exact', 'icontains'], "to_location": ['exact', 'icontains'], "memo": ['exact', 'icontains'], } class WCSTaskFilter(FilterSet): class Meta: model = ContainerWCSModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "taskid": ['exact', 'icontains'], "batch": ['exact'], "batch_out": ['exact'], "bound_list": ['exact'], "batch_number": ['exact', 'icontains'], "sequence": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "priority": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "month": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "tasktype": ['exact', 'icontains'], "tasknumber": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "order_number": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "container": ['exact', 'icontains'], "current_location": ['exact', 'icontains'], "target_location": ['exact', 'icontains'], "message": ['exact', 'icontains'], "working": ['exact', 'icontains','gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "is_delete": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], } class TaskFilter(FilterSet): class Meta: model = TaskModel fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "task_wcs" : ['exact'], "container_detail" : ['exact'], "batch_detail": ['exact'], "container_detail__goods_code": ['exact', 'icontains'], "container_detail__goods_desc": ['exact', 'icontains'], }