from django_filters import FilterSet
from .models import DeviceModel,LocationModel,LocationGroupModel,LocationContainerLink,LocationChangeLog

class DeviceFilter(FilterSet):
    class Meta:
        model = DeviceModel
        fields = {
            "location": ['exact'],
            "device_id": ['icontains'],
            "device_name": ['icontains'],
            "device_type": ['icontains','exact'],
            "ip_address": ['icontains'],
            "port": ['exact'],
            "status": ['icontains'],
            "create_time": ['exact', 'range'],
            "update_time": ['exact', 'range'],
        }
class LocationGroupFilter(FilterSet):
    class Meta:
        model = LocationGroupModel
        fields = {
            "warehouse_code": ['icontains'],
            "layer": ['exact', 'range'],

            "group_name": ['icontains'],
            "group_type": ['exact','icontains'],
            "group_code": ['icontains'],
            "status": ['icontains','exact'],
       
            "max_capacity": ['exact', 'range'],
            "current_quantity": ['exact', 'range'],
            "location_items": ['exact'],
        }
class LocationFilter(FilterSet):
    class Meta:
        model = LocationModel
        fields = {
            "warehouse_code": ['icontains'],
            "warehouse_name": ['icontains'],
            "shelf_type": ['icontains'],
            "row": ['exact', 'range'],
            "col": ['exact', 'range'],
            "layer": ['exact', 'range'],
            "update_time": ['exact', 'range'],
            "empty_label": ['exact'],
            "location_code": ['icontains'],
            "location_type": ['icontains','exact'],
            "status": ['icontains','exact'],
            "max_capacity": ['exact', 'range'],
            "current_quantity": ['exact', 'range'],
            "coordinate": ['icontains'],
        }

class LocationContainerLinkFilter(FilterSet):
    class Meta:
        model = LocationContainerLink
        fields = {
            "location": ['exact'],
            "container": ['exact'],
            "put_time": ['exact', 'range'],
            "operator": ['icontains'],
            "is_active": ['exact'],
        }

class LocationChangeLogFilter(FilterSet):
    class Meta:
        model = LocationChangeLog        
        fields = {
            "location": ['exact'],
            "container": ['exact'],
            "operation_type": ['exact'],
            "related_location": ['exact'],
            "timestamp": ['exact', 'range'],
           
        }