from django_filters import FilterSet, NumberFilter, CharFilter
from .models import ContainerListModel,ContainerDetailModel,ContainerOperationModel,TaskModel

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 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'],  
            }