class CrossreferenceFilter(FilterSet): """Crossreference filter.""" predecessor = RelatedFilter(TaxonFilter, field_name="predecessor", queryset=Taxon.objects.all()) successor = RelatedFilter(TaxonFilter, field_name="successor", queryset=Taxon.objects.all()) # filter_overrides = { # models.DateTimeField: { # 'filter_class': filters.IsoDateTimeFilter # }, # } # authorised_on_gte = filters.DateTimeFilter(name="authorised_on", lookup_expr='gte') class Meta: """Class opts.""" model = Crossreference fields = { "xref_id": ["exact", ], "reason": ["exact", ], "authorised_by": ["exact", ], "authorised_on": ["exact", "year__gte", "gt", "gte", "lt", "lte"], # "authorised_on_gte": "__all__", "effective_to": ["exact", "year__gte", "gt", "gte", "lt", "lte"], "comments": ["icontains", ], }
class EquipmentSystemFilter(FilterSet): """EquipmentSystemFilter.""" equipment_facility = \ RelatedFilter( queryset=EquipmentFacility.objects.all(), filterset=EquipmentFacilityFilter) equipment_instances = \ RelatedFilter( queryset=EquipmentInstance.objects.all(), filterset=EquipmentInstanceFilter) class Meta: """EquipmentSystemFilter metadata.""" model = EquipmentSystem fields = dict(name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', 'regex', 'iregex' ], date=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range', 'isnull', 'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range' ])
class EquipmentUniqueTypeFilter(FilterSet): """EquipmentUniqueTypeFilter.""" equipment_general_type = \ RelatedFilter( queryset=EquipmentGeneralType.objects.all(), filterset=EquipmentGeneralTypeFilter) equipment_data_fields = \ RelatedFilter( queryset=EquipmentDataField.objects.all(), filterset=EquipmentDataFieldFilter) equipment_unique_type_groups = \ RelatedFilter( queryset=EquipmentUniqueTypeGroup.objects.all(), filterset=EquipmentUniqueTypeGroupFilter) class Meta: """EquipmentUniqueTypeFilter metadata.""" model = EquipmentUniqueType fields = dict(name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', 'regex', 'iregex' ], description='__all__') filter_overrides = { JSONField: dict(filter_class=CharFilter # 'extra': lambda f: {'lookup_expr': 'icontains'} ) }
class EquipmentInstanceFilter(FilterSet): """EquipmentInstanceFilter.""" equipment_general_type = \ RelatedFilter( queryset=EquipmentGeneralType.objects.all(), filterset=EquipmentGeneralTypeFilter) equipment_unique_type = \ RelatedFilter( queryset=EquipmentUniqueType.objects.all(), filterset=EquipmentUniqueTypeFilter) equipment_facility = \ RelatedFilter( queryset=EquipmentFacility.objects.all(), filterset=EquipmentFacilityFilter) class Meta: """EquipmentInstanceFilter metadata.""" model = EquipmentInstance fields = dict(name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', 'regex', 'iregex' ], info='__all__') filter_overrides = { JSONField: dict(filter_class=CharFilter # 'extra': lambda f: {'lookup_expr': 'icontains'} ) }
class EquipmentInstanceDailyRiskScoreFilter(FilterSet): """EquipmentInstanceDailyRiskScoreFilter.""" equipment_unique_type_group = \ RelatedFilter( queryset=EquipmentUniqueTypeGroup.objects.all(), filterset=EquipmentUniqueTypeGroupFilter) equipment_instance = \ RelatedFilter( queryset=EquipmentInstance.objects.all(), filterset=EquipmentInstanceFilter) class Meta: """Metadata.""" model = EquipmentInstanceDailyRiskScore fields = dict( risk_score_name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', ], date=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range', 'isnull', 'year', 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range', ], risk_score_value=[ 'gt', 'gte', 'lt', 'lte', 'startswith', 'istartswith', 'range', ])
class NoteFilter(FilterSet): title = filters.CharFilter(field_name='title') author = RelatedFilter(UserFilter, field_name='author', queryset=User.objects.all()) class Meta: model = Note fields = []
class ChapterFilter(FilterSet): author = RelatedFilter( AuthorFilter, name='book__author', queryset=models.Author.objects.all(), ) class Meta: model = models.Chapter fields = ['id', 'title', 'chapter_number', 'author']
class AnimalFilter(FilterSet): breed = RelatedFilter( BreedFilter, name='breed', queryset=models.Breed.objects.all(), ) class Meta: model = models.Animal fields = { 'id': DEFAULT_NUMERIC_FILTER_OPERATORS, 'breed': DEFAULT_NUMERIC_FILTER_OPERATORS, 'name': DEFAULT_STRING_FILTER_OPERATORS, }
class BreedFilter(FilterSet): species = RelatedFilter( SpeciesFilter, name='species', queryset=models.Species.objects.all(), ) class Meta: model = models.Breed fields = { 'id': DEFAULT_NUMERIC_FILTER_OPERATORS, 'species': DEFAULT_NUMERIC_FILTER_OPERATORS, 'name': DEFAULT_STRING_FILTER_OPERATORS, }
class TuneFilter(FilterSet): uploader = RelatedFilter(UserFilter, field_name="uploader", queryset=User.objects.all()) class Meta: model = Tune fields = { "album": ["icontains", "contains", "exact", "iexact"], "artist": ["icontains", "contains", "exact", "iexact"], "name": ["icontains", "contains", "exact", "iexact"], "length": ["gt", "gte", "lt", "lte", "exact"], }
def get_change_attachment_filter(model, change_filter): if model._filterset: # noqa: protected-access return import_string(model._filterset) # noqa: protected-access meta = type('Meta', (BaseChangeAttachmentFilter.Meta, ), {'model': model}) pk_field_name = model._meta.pk.name # noqa: protected-access change_model = change_filter.Meta.model attrs = { 'Meta': meta, 'change': RelatedFilter(change_filter, queryset=change_model.objects.all()), pk_field_name: AutoFilter(lookups=UID_LOOKUPS) } name = f'{model._meta.object_name}Filter' # noqa: protected-access return type(name, (BaseChangeAttachmentFilter, ), attrs)
def get_change_filter(model, orig_viewset): if model._filterset: # noqa: protected-access return import_string(model._filterset) # noqa: protected-access documented_model = orig_viewset.serializer_class.Meta.model documented_field = model._documented_model_field # noqa: protected-access documented_filter = RelatedFilter(getattr(orig_viewset, 'filterset_class', orig_viewset.filterset_class), queryset=documented_model.objects.all()) meta = type('Meta', (BaseChangeFilter.Meta, ), {'model': model}) pk_field_name = model._meta.pk.name # noqa: protected-access attrs = { documented_field: documented_filter, 'Meta': meta, pk_field_name: AutoFilter(lookups=UID_LOOKUPS) } name = f'{model._meta.object_name}Filter' # noqa: protected-access return type(name, (BaseChangeFilter, ), attrs)
class EquipmentDataFieldFilter(FilterSet): """EquipmentDataFieldFilter.""" equipment_general_type = \ RelatedFilter( queryset=EquipmentGeneralType.objects.all(), filterset=EquipmentGeneralTypeFilter) equipment_data_field_type = \ RelatedFilter( queryset=EquipmentDataFieldType.objects.all(), filterset=EquipmentDataFieldTypeFilter) data_type = \ RelatedFilter( queryset=LogicalDataType.objects.all(), filterset=DataTypeFilter) numeric_measurement_unit = \ RelatedFilter( queryset=NumericMeasurementUnit.objects.all(), filterset=NumericMeasurementUnitFilter) equipment_unique_types = \ RelatedFilter( queryset=EquipmentUniqueType.objects.all(), filterset='EquipmentUniqueTypeFilter') class Meta: """EquipmentDataFieldFilter metadata.""" model = EquipmentDataField fields = dict(name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', 'regex', 'iregex' ], lower_numeric_null=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range' ], upper_numeric_null=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range' ], min_val=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range', 'isnull' ], max_val=[ 'exact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', 'startswith', 'endswith', 'range', 'isnull' ], description='__all__') filter_overrides = { JSONField: dict(filter_class=CharFilter # 'extra': lambda f: {'lookup_expr': 'icontains'} ) }
class EquipmentInstanceAlarmPeriodFilter(FilterSet): """EquipmentInstanceAlarmPeriodFilter.""" equipment_instance = \ RelatedFilter( queryset=EquipmentInstance.objects.all(), filterset=EquipmentInstanceFilter) alarm_type = \ RelatedFilter( queryset=EquipmentProblemType.objects.all(), filterset=EquipmentProblemTypeFilter) class Meta: """Metadata.""" model = EquipmentInstanceAlarmPeriod fields = dict( from_utc_date_time=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains' 'startswith', # 'istartswith' 'endswith', # 'iendswith', 'range', 'isnull', 'year', # 'year__iexact' 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', # 'month__iexact', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range', ], to_utc_date_time=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains' 'startswith', # 'istartswith' 'endswith', # 'iendswith', 'range', 'isnull', 'year', # 'year__iexact' 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', # 'month__iexact', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range', ], duration_in_days=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], has_associated_equipment_instance_alert_periods=['exact'], has_associated_equipment_instance_problem_diagnoses=['exact'])
class EquipmentInstanceAlertPeriodFilter(FilterSet): """EquipmentInstanceAlertPeriodFilter.""" equipment_unique_type_group = \ RelatedFilter( queryset=EquipmentUniqueTypeGroup.objects.all(), filterset=EquipmentUniqueTypeGroupFilter) equipment_instance = \ RelatedFilter( queryset=EquipmentInstance.objects.all(), filterset=EquipmentInstanceFilter) diagnosis_status = \ RelatedFilter( queryset=AlertDiagnosisStatus.objects.all(), filterset=AlertDiagnosisStatusFilter) class Meta: """Metadata.""" model = EquipmentInstanceAlertPeriod fields = dict( risk_score_name=[ 'exact', 'iexact', 'in', 'contains', 'icontains', 'startswith', 'istartswith', 'endswith', 'iendswith', ], threshold=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], from_date=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains' 'startswith', # 'istartswith' 'endswith', # 'iendswith', 'range', 'isnull', 'year', # 'year__iexact' 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', # 'month__iexact', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range', ], to_date=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains' 'startswith', # 'istartswith' 'endswith', # 'iendswith', 'range', 'isnull', 'year', # 'year__iexact' 'year__gt', 'year__gte', 'year__lt', 'year__lte', 'year__in', 'year__range', 'month', # 'month__iexact', 'month__gt', 'month__gte', 'month__lt', 'month__lte', 'month__in', 'month__range', ], duration=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], cumulative_excess_risk_score=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], approx_average_risk_score=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], last_risk_score=[ 'exact', # 'iexact', 'gt', 'gte', 'lt', 'lte', 'in', 'contains', # 'icontains', 'startswith', # 'istartswith', 'endswith', # 'iendswith', 'range', ], ongoing=['exact'], has_associated_equipment_instance_alarm_periods=['exact'], has_associated_equipment_instance_problem_diagnoses=['exact'])