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' ]
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', ]
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', ]
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']
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']
class DisplaCustomersDatabaseFilter(django_filters.FilterSet): gender = django_filters.AllValuesMultipleFilter() occupation = django_filters.AllValuesMultipleFilter() class Meta: model = Customer fields = [ 'gender', 'occupation', ]
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', ]
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', ]
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']
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', ]
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)
class LoggedActionAPIFilter(django_filters.FilterSet): class Meta: model = LoggedAction fields = ["action_type"] action_type = django_filters.AllValuesMultipleFilter( field_name="action_type" )
class DisplayBranchesDatabaseFilter(django_filters.FilterSet): state = django_filters.AllValuesMultipleFilter() class Meta: model = Branch fields = [ 'state', ]
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', ]
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 = []
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', ]
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']
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', ]
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
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')
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']