class RelationshipFilterSet(BaseFilterSet): source_type = ContentTypeMultipleChoiceFilter(choices=FeatureQuery("relationships").get_choices, conjoined=False) destination_type = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("relationships").get_choices, conjoined=False ) class Meta: model = Relationship fields = ["id", "name", "type", "source_type", "destination_type"]
class RelationshipAssociationFilterSet(BaseFilterSet): relationship = django_filters.ModelMultipleChoiceFilter( field_name="relationship__slug", queryset=Relationship.objects.all(), to_field_name="slug", label="Relationship (slug)", ) source_type = ContentTypeMultipleChoiceFilter(choices=FeatureQuery("relationships").get_choices, conjoined=False) destination_type = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("relationships").get_choices, conjoined=False ) class Meta: model = RelationshipAssociation fields = ["id", "relationship", "source_type", "source_id", "destination_type", "destination_id"]
class StatusFilterSet(BaseFilterSet, CreatedUpdatedFilterSet, CustomFieldFilterSet): """API filter for filtering custom status object fields.""" q = django_filters.CharFilter( method="search", label="Search", ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("statuses").get_choices, ) class Meta: model = Status fields = [ "id", "content_types", "color", "name", "slug", "created", "last_updated", ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | Q(slug__icontains=value) | Q(content_types__model__icontains=value) ).distinct()
class WebhookFilterSet(BaseFilterSet): q = django_filters.CharFilter( method="search", label="Search", ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("webhooks").get_choices, ) class Meta: model = Webhook fields = [ "name", "payload_url", "enabled", "content_types", "type_create", "type_update", "type_delete", ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | Q(payload_url__icontains=value) | Q(additional_headers__icontains=value) | Q(body_template__icontains=value) )
class TagFilterSet(NautobotFilterSet): q = SearchFilter(filter_predicates={ "name": "icontains", "slug": "icontains", "content_types__model": "icontains", }, ) content_types = ContentTypeMultipleChoiceFilter( choices=TaggableClassesQuery().get_choices, ) class Meta: model = Tag fields = ["id", "name", "slug", "color", "content_types"]
class DynamicGroupFilterSet(NautobotFilterSet): q = SearchFilter(filter_predicates={ "name": "icontains", "slug": "icontains", "description": "icontains", "content_type__app_label": "icontains", "content_type__model": "icontains", }, ) content_type = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("dynamic_groups").get_choices, conjoined=False) class Meta: model = DynamicGroup fields = ("id", "name", "slug", "description")
class CustomFieldFilterSet(BaseFilterSet): q = SearchFilter(filter_predicates={ "name": "icontains", "label": "icontains", "description": "icontains", }, ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("custom_fields").get_choices, ) class Meta: model = CustomField fields = [ "id", "content_types", "name", "required", "filter_logic", "weight" ]
class CustomFieldFilterSet(BaseFilterSet): q = django_filters.CharFilter( method="search", label="Search", ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("custom_fields").get_choices, ) class Meta: model = CustomField fields = ["id", "content_types", "name", "required", "filter_logic", "weight"] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter(Q(name__icontains=value) | Q(label__icontains=value) | Q(description__icontains=value))
class WebhookFilterSet(BaseFilterSet): q = SearchFilter(filter_predicates={ "name": "icontains", "payload_url": "icontains", "additional_headers": "icontains", "body_template": "icontains", }, ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("webhooks").get_choices, ) class Meta: model = Webhook fields = [ "name", "payload_url", "enabled", "content_types", "type_create", "type_update", "type_delete", ]
class StatusFilterSet(NautobotFilterSet): """API filter for filtering custom status object fields.""" q = SearchFilter(filter_predicates={ "name": "icontains", "slug": "icontains", "content_types__model": "icontains", }, ) content_types = ContentTypeMultipleChoiceFilter( choices=FeatureQuery("statuses").get_choices, ) class Meta: model = Status fields = [ "id", "content_types", "color", "name", "slug", "created", "last_updated", ]