import django_filters
from django import forms
from project.models import *
from .models import *
from django.db.models import Q
from addons.options import (PROJECT_TYPE, PROJECT_STATUS, DETAIL_FURNISHING, DETAIL_PARKING, DETAIL_TRANSACTION_TYPE)

class BuilderFilter(django_filters.FilterSet):

    name = django_filters.CharFilter(field_name='name', method='search_by_full_name')
    # location = django_filters.CharFilter(field_name='location')

    def search_by_full_name(self, qs, name, value):
        for term in value.split():
            qs = qs.filter(Q(name__icontains=term) | Q(locality__name__icontains=term) | Q(location__name__icontains=term))
        return qs

    # type = django_filters.ChoiceFilter(choices=PROJECT_TYPE, 
    #                                 field_name='project_type', 
    #                                 empty_label="Project Type"
    #                                 )
    # category = django_filters.ChoiceFilter(field_name='category_id', 
    #                                 empty_label="Project Category"
    #                                 )
    # cat_name = django_filters.ChoiceFilter(field_name='category__category__name')
    possession = django_filters.ChoiceFilter(empty_label="Possession Type", 
                                                        field_name="project_details__possession",
                                                        choices=PROJECT_STATUS)
    furnishing = django_filters.ChoiceFilter(empty_label="Furnishing Type", 
                                                        field_name="project_details__furnishing",
                                                        choices=DETAIL_FURNISHING)
    # locality = django_filters.ChoiceFilter(field_name='locality')

    class Meta:
        model = Project
        fields = ['name','category', 'locality', 'location', 'possession', 'furnishing']
