Exemplo n.º 1
0
class FamilyFilter(filters.FilterSet):

    parent_given_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='a_family__parent__given_name',
        lookup_expr='icontains',
        label="Parental Given Name")
    child_given_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='c_family__child__given_name',
        lookup_expr='icontains',
        label="Child Given Name")

    parent_surname = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='a_family__parent__surname',
        lookup_expr='icontains',
        label="Parental Surname")
    child_surname = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='c_family__child__surname',
        lookup_expr='icontains',
        label="Child Surname")

    notes_inc = filters.CharFilter(field_name='notes',
                                   lookup_expr='icontains',
                                   label="Notes Include")

    class Meta:
        model = Family
        exclude = [
            'a_family__parent__surname', 'c_family__child__surname',
            'a_family__parent__given_name', 'c_family__child__given_name',
            'notes'
        ]
Exemplo n.º 2
0
class SkillSetFilter(django_filters.FilterSet):
    def keyword_filtering(self, queryset, name, value):
        return SkillSet.objects.partial_text_search(value)

    search = django_filters.CharFilter(method='keyword_filtering')

    id = django_filters.AllValuesMultipleFilter(
        name="id",
        label="ID",
    )

    category = django_filters.AllValuesMultipleFilter(
        name="category",
        label="Category",
    )

    sub_category = django_filters.AllValuesMultipleFilter(
        name="sub_category",
        label="Sub Category",
    )

    class Meta:
        model = SkillSet
        fields = [
            'search',
            'id',
            'category',
            'sub_category',
        ]
Exemplo n.º 3
0
class TaskItemFilter(django_filters.FilterSet):
    id = django_filters.AllValuesMultipleFilter(
        name="id",
        label="ID",
    )

    title = django_filters.AllValuesMultipleFilter(
        name="title",
        label="Title",
    )

    o = django_filters.OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('due_date', 'due_date'),
            ('title', 'title'),
            ('type_of', 'type_of'),
            ('job__customer__indexed_text', 'customer_name'),
            ('job__associate__indexed_text', 'associate_name'),
        ),

        # # labels do not need to retain order
        # field_labels={
        #     'username': '******',
        # }
    )

    class Meta:
        model = TaskItem
        fields = [
            'id',
            'title',
            'is_closed',
            'type_of',
        ]
Exemplo n.º 4
0
class AdultFilter(filters.FilterSet):
    given_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='given_name',
        lookup_expr="icontains",
        label="Given Name")

    surname = filters.AllValuesMultipleFilter(widget=Select2MultipleWidget(),
                                              field_name='surname',
                                              lookup_expr='icontains',
                                              label="Surname")

    preferred_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='preferred_name',
        lookup_expr='icontains',
        label="Preferred Name")

    birth_date = filters.DateFromToRangeFilter(
        label="Birth Date Range",
        widget=RangeWidget(attrs={
            'type': 'date',
            'class': 'form-control mb-2'
        }))

    years_of_education = filters.RangeFilter(
        label="Years of Education Range",
        widget=RangeWidget(attrs={
            'type': 'number',
            'class': 'form-control mb-2'
        }))

    contact_pref = filters.MultipleChoiceFilter(choices=CONTACT_CHOICES,
                                                widget=Select2MultipleWidget(),
                                                lookup_expr='icontains',
                                                label="Contact Preference")

    gender = filters.AllValuesMultipleFilter(widget=Select2MultipleWidget(),
                                             lookup_expr='icontains',
                                             label="Gender")

    health_notes_inc = filters.CharFilter(field_name='health_notes',
                                          lookup_expr='icontains',
                                          label="Health Notes Include")

    personal_notes_inc = filters.CharFilter(field_name='personal_notes',
                                            lookup_expr='icontains',
                                            label="Personal Notes Include")

    has_family = filters.BooleanFilter(field_name='parent',
                                       lookup_expr='isnull',
                                       exclude=True,
                                       label="Family In Database")

    class Meta:
        model = Adult
        exclude = ['id', 'address', 'phone', 'email']
Exemplo n.º 5
0
class SampleFilter(django_filters.FilterSet):
    scientist = django_filters.ModelMultipleChoiceFilter(queryset=Scientist.objects.all(),widget=forms.CheckboxSelectMultiple)
    status = django_filters.AllValuesMultipleFilter(widget=forms.CheckboxSelectMultiple)
    genotype = django_filters.AllValuesFilter(widget=forms.Select)
    #organism =django_filters.CharFilter(widget=forms.Select)
    tissue_type = django_filters.AllValuesMultipleFilter(widget=forms.CheckboxSelectMultiple)
    class Meta:
        model = Sample
        fields = ['antibody','celltype','exptype','genotype','scientist','sample_id','status','flowlane','organism','tissue_type','treatment']
Exemplo n.º 6
0
class DisplaCustomersDatabaseFilter(django_filters.FilterSet):
    gender = django_filters.AllValuesMultipleFilter()
    occupation = django_filters.AllValuesMultipleFilter()

    class Meta:
        model = Customer
        fields = [
            'gender',
            'occupation',
        ]
Exemplo n.º 7
0
class DisplayVehiclesDatabaseFilter(django_filters.FilterSet):
    pricenew = django_filters.RangeFilter()
    make = django_filters.CharFilter(lookup_expr='icontains')
    model = django_filters.CharFilter(lookup_expr='icontains')
    series = django_filters.CharFilter(lookup_expr='icontains')
    year = django_filters.RangeFilter()
    enginesize = django_filters.AllValuesMultipleFilter()
    fuelsystem = django_filters.AllValuesMultipleFilter()
    tankcapacity = django_filters.AllValuesMultipleFilter()
    power = django_filters.AllValuesMultipleFilter()
    seatcapacity = django_filters.AllValuesMultipleFilter()
    standardtransmission = django_filters.AllValuesMultipleFilter()
    bodytype = django_filters.AllValuesMultipleFilter()
    drive = django_filters.AllValuesMultipleFilter()
    wheelbase = django_filters.AllValuesMultipleFilter()

    class Meta:
        model = Vehicles
        fields = [
            'make',
            'model',
            'series',
            'year',
            'pricenew',
            'enginesize',
            'fuelsystem',
            'tankcapacity',
            'power',
            'seatcapacity',
            'standardtransmission',
            'bodytype',
            'drive',
            'wheelbase',
        ]
Exemplo n.º 8
0
class TaskItemFilter(django_filters.FilterSet):
    id = django_filters.AllValuesMultipleFilter(
        name="id",
        label="ID",
    )

    title = django_filters.AllValuesMultipleFilter(
        name="title",
        label="Title",
    )

    o = django_filters.OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('due_date', 'due_date'),
            ('title', 'title'),
            ('type_of', 'type_of'),
            ('job__customer__indexed_text', 'customer_name'),
            ('job__associate__indexed_text', 'associate_name'),
        ),

        # # labels do not need to retain order
        # field_labels={
        #     'username': '******',
        # }
    )

    def keyword_filtering(self, queryset, name, value):
        return TaskItem.objects.full_text_search(value)

    search = django_filters.CharFilter(method='keyword_filtering')

    def is_closed_filtering(self, queryset, name, value):
        if value == 3:
            return queryset.filter(is_closed=False)
        elif value == 2:
            return queryset.filter(is_closed=True)
        else:
            return queryset

    is_closed = django_filters.NumberFilter(method='is_closed_filtering')

    class Meta:
        model = TaskItem
        fields = [
            'id',
            'title',
            'is_closed',
            'type_of',
            'job',
            'search',
        ]
Exemplo n.º 9
0
class HouseFilter(django_filters.FilterSet):
    address = django_filters.CharFilter(field_name='address',
                                        lookup_expr='icontains')
    beds = django_filters.AllValuesMultipleFilter()
    baths = django_filters.AllValuesMultipleFilter()
    price__gt = django_filters.NumberFilter(field_name='rent',
                                            lookup_expr='gt')
    price__lt = django_filters.NumberFilter(field_name='rent',
                                            lookup_expr='lt')

    class Meta:
        model = House
        fields = ['address', 'city', 'beds', 'baths', 'price__gt', 'price__lt']
Exemplo n.º 10
0
class TaskItemFilter(django_filters.FilterSet):
    id = django_filters.AllValuesMultipleFilter(
        name="id",
        label="ID",)

    title = django_filters.AllValuesMultipleFilter(
        name="title",
        label="Title",)

    class Meta:
        model = TaskItem
        fields = [
            'id',
            'title',
        ]
Exemplo n.º 11
0
class LoggedActionRecentChangesFilter(django_filters.FilterSet):
    """
    For filtering the recent changes page
    """

    class Meta:
        model = LoggedAction
        fields = ["action_type", "flagged_type", "edit_type", "username"]

    flagged_type = django_filters.ChoiceFilter(
        choices=[
            (t.type, t.label)
            for t in REVIEW_TYPES
            if not t.type.startswith("no_review_")
        ],
        widget=LinkWidget(),
    )

    edit_type = django_filters.ChoiceFilter(
        choices=[(edit_type.name, edit_type.value) for edit_type in EditType],
        widget=LinkWidget(),
    )

    action_type = django_filters.AllValuesMultipleFilter(
        choices=get_action_types
    )

    username = django_filters.CharFilter(
        label="User name", method="filter_username"
    )

    def filter_username(self, queryset, name, value):
        return queryset.filter(user__username=value)
Exemplo n.º 12
0
class LoggedActionAPIFilter(django_filters.FilterSet):
    class Meta:
        model = LoggedAction
        fields = ["action_type"]

    action_type = django_filters.AllValuesMultipleFilter(
        field_name="action_type"
    )
Exemplo n.º 13
0
class DisplayBranchesDatabaseFilter(django_filters.FilterSet):
    state = django_filters.AllValuesMultipleFilter()

    class Meta:
        model = Branch
        fields = [
            'state',
        ]
Exemplo n.º 14
0
class SkillSetFilter(django_filters.FilterSet):
    o = django_filters.OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('id', 'id'),
            ('category', 'category'),
            ('sub_category', 'sub_category'),
            ('is_archived', 'is_archived'),
        ),

        # # labels do not need to retain order
        # field_labels={
        #     'username': '******',
        # }
    )

    def keyword_filtering(self, queryset, name, value):
        return SkillSet.objects.partial_text_search(value)

    search = django_filters.CharFilter(method='keyword_filtering')

    id = django_filters.AllValuesMultipleFilter(
        name="id",
        label="ID",
    )

    category = django_filters.AllValuesMultipleFilter(
        name="category",
        label="Category",
    )

    sub_category = django_filters.AllValuesMultipleFilter(
        name="sub_category",
        label="Sub Category",
    )

    class Meta:
        model = SkillSet
        fields = [
            'search',
            'id',
            'category',
            'sub_category',
            'is_archived',
        ]
Exemplo n.º 15
0
class DeveloperFilter(django_filters.FilterSet):
    city = django_filters.AllValuesMultipleFilter()
    skills = django_filters.ModelMultipleChoiceFilter(
        queryset=Tag.objects.all())
    position = django_filters.CharFilter(lookup_expr='icontains')

    class Meta:
        model = Profile
        fields = []
class ConcertFilter(django_filters.FilterSet):
    date_range = django_filters.DateFromToRangeFilter(
        field_name="datetime",
        label="Date range",
        widget=django_filters.widgets.RangeWidget(attrs={"type": "date"}),
    )
    borough = django_filters.MultipleChoiceFilter(choices=Concert.BOROUGH_CHOICES)
    performers = django_filters.AllValuesMultipleFilter(field_name="performer_names")
    venues = django_filters.AllValuesMultipleFilter(field_name="venue_name")
    genres = django_filters.ModelMultipleChoiceFilter(
        field_name="genres__genre",
        to_field_name="genre",
        lookup_expr="contains",
        queryset=Genre.objects.all(),
    )

    class Meta:
        model = Concert
        fields = []
Exemplo n.º 17
0
class DisplaOrdersDatabaseFilter(django_filters.FilterSet):
    # orderid
    createdate = django_filters.DateFromToRangeFilter()
    pickupdate = django_filters.DateFromToRangeFilter()
    returndate = django_filters.DateFromToRangeFilter()
    pickupstore = django_filters.AllValuesMultipleFilter()
    returnstore = django_filters.AllValuesMultipleFilter()
    rentedvehicle = django_filters.AllValuesMultipleFilter()

    # customer =
    class Meta:
        model = Orders
        fields = [
            'createdate',
            'pickupdate',
            'returndate',
            'pickupstore',
            'returnstore',
            'rentedvehicle',
        ]
Exemplo n.º 18
0
class DomainFilter(django_filters.FilterSet):
    keyword = django_filters.CharFilter(lookup_expr='icontains')
    tk = django_filters.BooleanFilter(field_name='tk', widget=BooleanWidget())
    ml = django_filters.BooleanFilter(field_name='ml', widget=BooleanWidget())
    ga = django_filters.BooleanFilter(field_name='ga', widget=BooleanWidget())
    cf = django_filters.AllValuesMultipleFilter(field_name='cf',
                                                widget=CheckboxInput())

    class Meta:
        model = Domain
        fields = ['keyword', 'tk', 'ml', 'ga', 'cf']
Exemplo n.º 19
0
class DogFilter(django_filters.FilterSet):

    #filters
    breed = django_filters.AllValuesMultipleFilter(field_name="breed",
                                                   label="Breed")
    size = django_filters.AllValuesMultipleFilter(field_name="size",
                                                  label="Size")
    age = django_filters.AllValuesMultipleFilter(field_name="age", label="Age")
    energyLevel = django_filters.AllValuesMultipleFilter(
        field_name="energyLevel", label="Personality")

    #sorters
    order = django_filters.OrderingFilter(
        fields=['favourites', 'score', 'created_at'])

    class Meta:
        model = Dog
        fields = [
            'breed',
            'size',
            'age',
            'energyLevel',
        ]
Exemplo n.º 20
0
class IndividualFilter(django_filters.rest_framework.FilterSet):
    id = django_filters.AllValuesMultipleFilter()
    alternate_ids = django_filters.CharFilter(lookup_expr="icontains")
    sex = django_filters.CharFilter(lookup_expr="iexact")
    karyotypic_sex = django_filters.CharFilter(lookup_expr="iexact")
    ethnicity = django_filters.CharFilter(lookup_expr="icontains")
    race = django_filters.CharFilter(lookup_expr="icontains")
    # e.g. date_of_birth_after=1987-01-01&date_of_birth_before=1990-12-31
    date_of_birth = django_filters.DateFromToRangeFilter()
    disease = django_filters.CharFilter(
        method="filter_disease", field_name="phenopackets__diseases",
        label="Disease"
    )
    # e.g. select all patients who have a symptom "dry cough"
    found_phenotypic_feature = django_filters.CharFilter(
        method="filter_found_phenotypic_feature", field_name="phenopackets__phenotypic_features",
        label="Found phenotypic feature"
    )
    extra_properties = django_filters.CharFilter(method="filter_extra_properties", label="Extra properties")
    # full-text search at api/individuals?search=
    search = django_filters.CharFilter(method="filter_search", label="Search")

    class Meta:
        model = Individual
        fields = ["id", "alternate_ids", "active", "deceased", "phenopackets__biosamples", "phenopackets"]

    def filter_found_phenotypic_feature(self, qs, name, value):
        """
        Filters only found (present in a patient) Phenotypic features by id or label
        """
        qs = qs.filter(
            Q(phenopackets__phenotypic_features__pftype__id__icontains=value) |
            Q(phenopackets__phenotypic_features__pftype__label__icontains=value),
            phenopackets__phenotypic_features__negated=False
        ).distinct()
        return qs

    def filter_disease(self, qs, name, value):
        qs = qs.filter(
            Q(phenopackets__diseases__term__id__icontains=value) |
            Q(phenopackets__diseases__term__label__icontains=value)
        ).distinct()
        return qs

    def filter_extra_properties(self, qs, name, value):
        return qs.filter(extra_properties__icontains=value)

    def filter_search(self, qs, name, value):
        # creates index in db
        qs = qs.annotate(
            search=SearchVector("id", "alternate_ids", "date_of_birth",
                                Cast("age", TextField()),
                                "sex", "karyotypic_sex",
                                Cast("taxonomy", TextField()),
                                Cast("comorbid_condition", TextField()),
                                Cast("ecog_performance_status", TextField()),
                                Cast("karnofsky", TextField()),
                                "ethnicity", "race",
                                Cast("extra_properties", TextField()),

                                # Phenotypic feature fields
                                "phenopackets__phenotypic_features__description",
                                Cast("phenopackets__phenotypic_features__pftype", TextField()),
                                Cast("phenopackets__phenotypic_features__severity", TextField()),
                                Cast("phenopackets__phenotypic_features__modifier", TextField()),
                                Cast("phenopackets__phenotypic_features__onset", TextField()),
                                Cast("phenopackets__phenotypic_features__evidence", TextField()),
                                Cast("phenopackets__phenotypic_features__extra_properties", TextField()),

                                # Biosample fields
                                "phenopackets__biosamples__id",
                                "phenopackets__biosamples__description",
                                Cast("phenopackets__biosamples__sampled_tissue", TextField()),
                                Cast("phenopackets__biosamples__taxonomy", TextField()),
                                Cast("phenopackets__biosamples__individual_age_at_collection", TextField()),
                                Cast("phenopackets__biosamples__histological_diagnosis", TextField()),
                                Cast("phenopackets__biosamples__tumor_progression", TextField()),
                                Cast("phenopackets__biosamples__tumor_grade", TextField()),
                                Cast("phenopackets__biosamples__diagnostic_markers", TextField()),
                                # Biosample Procedure fields
                                Cast("phenopackets__biosamples__procedure__code", TextField()),
                                Cast("phenopackets__biosamples__procedure__body_site", TextField()),
                                Cast("phenopackets__biosamples__procedure__extra_properties", TextField()),
                                Cast("phenopackets__biosamples__extra_properties", TextField()),
                                # Biosample Variant fields
                                "phenopackets__biosamples__variants__allele_type",
                                Cast("phenopackets__biosamples__variants__allele", TextField()),
                                Cast("phenopackets__biosamples__variants__zygosity", TextField()),
                                Cast("phenopackets__biosamples__variants__extra_properties", TextField()),
                                # Biosample HTS file fields
                                "phenopackets__biosamples__hts_files__uri",
                                "phenopackets__biosamples__hts_files__description",
                                "phenopackets__biosamples__hts_files__hts_format",
                                "phenopackets__biosamples__hts_files__genome_assembly",
                                Cast("phenopackets__biosamples__hts_files__individual_to_sample_identifiers",
                                     TextField()),
                                Cast("phenopackets__biosamples__hts_files__extra_properties", TextField()),

                                # Gene fields
                                "phenopackets__genes__id",
                                "phenopackets__genes__alternate_ids",
                                "phenopackets__genes__symbol",
                                Cast("phenopackets__genes__extra_properties", TextField()),

                                # Variant fields
                                "phenopackets__variants__allele_type",
                                Cast("phenopackets__variants__allele", TextField()),
                                Cast("phenopackets__variants__zygosity", TextField()),
                                Cast("phenopackets__variants__extra_properties", TextField()),

                                # Disease field
                                Cast("phenopackets__diseases__term", TextField()),
                                Cast("phenopackets__diseases__onset", TextField()),
                                Cast("phenopackets__diseases__disease_stage", TextField()),
                                Cast("phenopackets__diseases__tnm_finding", TextField()),
                                Cast("phenopackets__diseases__extra_properties", TextField()),

                                # HTS file fields
                                "phenopackets__hts_files__uri",
                                "phenopackets__hts_files__description",
                                "phenopackets__hts_files__hts_format",
                                "phenopackets__hts_files__genome_assembly",
                                Cast("phenopackets__hts_files__individual_to_sample_identifiers", TextField()),
                                Cast("phenopackets__hts_files__extra_properties", TextField()),

                                # Experiment fields
                                "phenopackets__biosamples__experiment__study_type",
                                "phenopackets__biosamples__experiment__experiment_type",
                                Cast("phenopackets__biosamples__experiment__experiment_ontology", TextField()),
                                "phenopackets__biosamples__experiment__molecule",
                                Cast("phenopackets__biosamples__experiment__molecule_ontology", TextField()),
                                "phenopackets__biosamples__experiment__library_strategy",
                                "phenopackets__biosamples__experiment__library_source",
                                "phenopackets__biosamples__experiment__library_selection",
                                "phenopackets__biosamples__experiment__library_layout",
                                "phenopackets__biosamples__experiment__extraction_protocol",
                                "phenopackets__biosamples__experiment__reference_registry_id",
                                Cast("phenopackets__biosamples__experiment__extra_properties", TextField()),
                                # Experiments: Experiment Results fields
                                "phenopackets__biosamples__experiment__experiment_results__description",
                                "phenopackets__biosamples__experiment__experiment_results__filename",
                                "phenopackets__biosamples__experiment__experiment_results__file_format",
                                "phenopackets__biosamples__experiment__experiment_results__data_output_type",
                                "phenopackets__biosamples__experiment__experiment_results__usage",
                                "phenopackets__biosamples__experiment__experiment_results__creation_date",
                                "phenopackets__biosamples__experiment__experiment_results__created_by",
                                Cast(
                                    "phenopackets__biosamples__experiment__experiment_results__extra_properties",
                                    TextField()
                                ),
                                # Experiments: Instrument fields
                                "phenopackets__biosamples__experiment__instrument__platform",
                                "phenopackets__biosamples__experiment__instrument__description",
                                "phenopackets__biosamples__experiment__instrument__model",
                                Cast(
                                    "phenopackets__biosamples__experiment__instrument__extra_properties",
                                    TextField()
                                ),
                                )
        ).filter(search=value).distinct("id")
        return qs
Exemplo n.º 21
0
class SharedFranchiseListFilter(filters.FilterSet):
    class Meta:
        model = models.SharedFranchise
        fields = [
            'address_country',
            'address_locality',
            'address_region',
            'post_office_box_number',
            'postal_code',
            'street_address',
            'created',
            'created_range'
        ]

    address_country = django_filters.AllValuesMultipleFilter(
        name="address_country",
        label="address_country")

    address_locality = django_filters.AllValuesMultipleFilter(
        name="address_locality",
        label="address_locality")

    address_region = django_filters.AllValuesMultipleFilter(
        name="address_region",
        label="address_region")

    post_office_box_number = django_filters.CharFilter(
        name="post_office_box_number",
        label="post_office_box_number",
        lookup_expr=['contains', 'exact', 'iexact'])

    postal_code = django_filters.CharFilter(
        name="postal_code",
        label="postal_code",
        lookup_expr=['contains', 'exact', 'iexact'])

    street_address = django_filters.CharFilter(
        name="street_address",
        label="street_address",
        lookup_expr=['contains', 'exact', 'iexact'])

    street_address_extra = django_filters.CharFilter(
        name="street_address_extra",
        label="street_address_extra",
        lookup_expr=['contains', 'exact', 'iexact'])

    # # Note: Use "ISO 8601" formatted dates
    created = django_filters.DateFilter(
        name="created",
        label="created",
        lookup_expr=['gt', 'gte', 'lt', 'lte'])

    # Note: Use "ISO 8601" formatted dates
    created_range = django_filters.DateFromToRangeFilter(
        name="created",
        label="created_range",)

    # Override the django-rest-framework "searching".
    search = filters.CharFilter(method='search_filter')

    def search_filter(self, queryset, name, value):
        """
        Override the django-rest-framework "searching".
        """
        return queryset.filter(
            Q(address_country__icontains=value) |
            Q(address_locality__icontains=value) |
            Q(address_region__icontains=value) |
            Q(name__icontains=value) |
            Q(alternate_name__icontains=value)
        ).exclude(schema_name="public").order_by('name')
Exemplo n.º 22
0
class ChildFilter(filters.FilterSet):
    given_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='given_name',
        lookup_expr="icontains",
        label="Given Name")

    surname = filters.AllValuesMultipleFilter(widget=Select2MultipleWidget(),
                                              field_name='surname',
                                              lookup_expr='icontains',
                                              label="Surname")

    preferred_name = filters.AllValuesMultipleFilter(
        widget=Select2MultipleWidget(),
        field_name='preferred_name',
        lookup_expr='icontains',
        label="Preferred Name")

    gender = filters.AllValuesMultipleFilter(widget=Select2MultipleWidget(),
                                             lookup_expr='icontains',
                                             label="Gender")

    health_notes_inc = filters.CharFilter(field_name='health_notes',
                                          lookup_expr='icontains',
                                          label="Health Notes Include")

    personal_notes_inc = filters.CharFilter(field_name='personal_notes',
                                            lookup_expr='icontains',
                                            label="Personal Notes Include")

    has_family = filters.BooleanFilter(field_name='childin',
                                       lookup_expr='isnull',
                                       exclude=True,
                                       label="Family In Database")

    was_full_term = filters.BooleanFilter(label="Was Full Term",
                                          field_name="was_full_term")

    hereditary_audio_problems = filters.BooleanFilter(
        label="Hereditary Audio Problems",
        field_name="hereditary_audio_problems")

    hereditary_language_pathologies = filters.BooleanFilter(
        label="Hereditary Language Pathologies",
        field_name="hereditary_language_pathologies")

    birth_date = filters.DateFromToRangeFilter(
        label="Birth Date Range",
        widget=RangeWidget(attrs={
            'type': 'date',
            'class': 'form-control mb-2'
        }))

    birth_weight = filters.RangeFilter(
        label="Birth Weight Range (Grams)",
        widget=RangeWidget(attrs={
            'type': 'number',
            'class': 'form-control mb-2'
        }))

    birth_height = filters.RangeFilter(
        label="Birth Height Range (CM)",
        widget=RangeWidget(attrs={
            'type': 'number',
            'class': 'form-control mb-2'
        }))

    gestation_length_weeks = filters.RangeFilter(
        label="Gestation Length Range (Weeks)",
        widget=RangeWidget(attrs={
            'type': 'number',
            'class': 'form-control mb-2'
        }))
    #hx ear inf

    hx_repeated_ear_infection = filters.CharFilter(
        field_name='hx_repeated_ear_infection',
        lookup_expr='icontains',
        label="HX Repeated Ear Infection Includes")

    class Meta:
        model = Child
        exclude = ['id']