class ImageAttachmentFilterSet(BaseFilterSet): created = django_filters.DateTimeFilter() content_type = ContentTypeFilter() class Meta: model = ImageAttachment fields = ['id', 'content_type_id', 'object_id', 'name']
class JournalEntryFilterSet(ChangeLoggedModelFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) created = django_filters.DateTimeFromToRangeFilter() assigned_object_type = ContentTypeFilter() created_by_id = django_filters.ModelMultipleChoiceFilter( queryset=User.objects.all(), label='User (ID)', ) created_by = django_filters.ModelMultipleChoiceFilter( field_name='created_by__username', queryset=User.objects.all(), to_field_name='username', label='User (name)', ) kind = django_filters.MultipleChoiceFilter(choices=JournalEntryKindChoices) class Meta: model = JournalEntry fields = [ 'id', 'assigned_object_type_id', 'assigned_object_id', 'created', 'kind' ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter(comments__icontains=value)
class VLANGroupFilterSet(BaseFilterSet, NameSlugSearchFilterSet): scope_type = ContentTypeFilter() region = django_filters.NumberFilter( method='filter_scope' ) sitegroup = django_filters.NumberFilter( method='filter_scope' ) site = django_filters.NumberFilter( method='filter_scope' ) location = django_filters.NumberFilter( method='filter_scope' ) rack = django_filters.NumberFilter( method='filter_scope' ) clustergroup = django_filters.NumberFilter( method='filter_scope' ) cluster = django_filters.NumberFilter( method='filter_scope' ) class Meta: model = VLANGroup fields = ['id', 'name', 'slug', 'description', 'scope_id'] def filter_scope(self, queryset, name, value): return queryset.filter( scope_type=ContentType.objects.get(model=name), scope_id=value )
class ObjectChangeFilterSet(BaseFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) time = django_filters.DateTimeFromToRangeFilter() changed_object_type = ContentTypeFilter() user_id = django_filters.ModelMultipleChoiceFilter( queryset=User.objects.all(), label='User (ID)', ) user = django_filters.ModelMultipleChoiceFilter( field_name='user__username', queryset=User.objects.all(), to_field_name='username', label='User name', ) class Meta: model = ObjectChange fields = [ 'id', 'user', 'user_name', 'request_id', 'action', 'changed_object_type_id', 'changed_object_id', 'object_repr', ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(user_name__icontains=value) | Q(object_repr__icontains=value) )
class WebhookFilterSet(BaseFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) content_types = ContentTypeFilter() http_method = django_filters.MultipleChoiceFilter( choices=WebhookHttpMethodChoices) class Meta: model = Webhook fields = [ 'id', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', 'payload_url', 'enabled', 'http_method', 'http_content_type', 'secret', 'ssl_verification', 'ca_file_path', ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | Q(payload_url__icontains=value))
class VLANGroupFilterSet(OrganizationalModelFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) scope_type = ContentTypeFilter() region = django_filters.NumberFilter(method='filter_scope') sitegroup = django_filters.NumberFilter(method='filter_scope') site = django_filters.NumberFilter(method='filter_scope') location = django_filters.NumberFilter(method='filter_scope') rack = django_filters.NumberFilter(method='filter_scope') clustergroup = django_filters.NumberFilter(method='filter_scope') cluster = django_filters.NumberFilter(method='filter_scope') class Meta: model = VLANGroup fields = ['id', 'name', 'slug', 'description', 'scope_id'] def search(self, queryset, name, value): if not value.strip(): return queryset qs_filter = (Q(name__icontains=value) | Q(description__icontains=value)) return queryset.filter(qs_filter) def filter_scope(self, queryset, name, value): return queryset.filter(scope_type=ContentType.objects.get(model=name), scope_id=value)
class CustomFieldFilterSet(django_filters.FilterSet): content_types = ContentTypeFilter() class Meta: model = CustomField fields = [ 'id', 'content_types', 'name', 'required', 'filter_logic', 'weight' ]
class CableFilterSet(PrimaryModelFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) termination_a_type = ContentTypeFilter() termination_a_id = MultiValueNumberFilter() termination_b_type = ContentTypeFilter() termination_b_id = MultiValueNumberFilter() type = django_filters.MultipleChoiceFilter(choices=CableTypeChoices) status = django_filters.MultipleChoiceFilter(choices=CableStatusChoices) color = django_filters.MultipleChoiceFilter(choices=ColorChoices) device_id = MultiValueNumberFilter(method='filter_device') device = MultiValueCharFilter(method='filter_device', field_name='device__name') rack_id = MultiValueNumberFilter(method='filter_device', field_name='device__rack_id') rack = MultiValueNumberFilter(method='filter_device', field_name='device__rack__name') site_id = MultiValueNumberFilter(method='filter_device', field_name='device__site_id') site = MultiValueNumberFilter(method='filter_device', field_name='device__site__slug') tenant_id = MultiValueNumberFilter(method='filter_device', field_name='device__tenant_id') tenant = MultiValueNumberFilter(method='filter_device', field_name='device__tenant__slug') tag = TagFilter() class Meta: model = Cable fields = [ 'id', 'label', 'length', 'length_unit', 'termination_a_id', 'termination_b_id' ] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter(label__icontains=value) def filter_device(self, queryset, name, value): queryset = queryset.filter( Q(**{'_termination_a_{}__in'.format(name): value}) | Q(**{'_termination_b_{}__in'.format(name): value})) return queryset
class WebhookFilterSet(BaseFilterSet): content_types = ContentTypeFilter() http_method = django_filters.MultipleChoiceFilter( choices=WebhookHttpMethodChoices ) class Meta: model = Webhook fields = [ 'id', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', 'payload_url', 'enabled', 'http_method', 'http_content_type', 'secret', 'ssl_verification', 'ca_file_path', ]
class FHRPGroupAssignmentFilterSet(ChangeLoggedModelFilterSet): interface_type = ContentTypeFilter() group_id = django_filters.ModelMultipleChoiceFilter( queryset=FHRPGroup.objects.all(), label='Group (ID)', ) class Meta: model = FHRPGroupAssignment fields = [ 'id', 'group_id', 'interface_type', 'interface_id', 'priority' ]
class ImageAttachmentFilterSet(BaseFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) created = django_filters.DateTimeFilter() content_type = ContentTypeFilter() class Meta: model = ImageAttachment fields = ['id', 'content_type_id', 'object_id', 'name'] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter(name__icontains=value)
class CustomFieldFilterSet(BaseFilterSet): q = django_filters.CharFilter( method='search', label='Search', ) content_types = ContentTypeFilter() 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 ContactAssignmentFilterSet(ChangeLoggedModelFilterSet): content_type = ContentTypeFilter() contact_id = django_filters.ModelMultipleChoiceFilter( queryset=Contact.objects.all(), label='Contact (ID)', ) role_id = django_filters.ModelMultipleChoiceFilter( queryset=ContactRole.objects.all(), label='Contact role (ID)', ) role = django_filters.ModelMultipleChoiceFilter( field_name='role__slug', queryset=ContactRole.objects.all(), to_field_name='slug', label='Contact role (slug)', ) class Meta: model = ContactAssignment fields = ['id', 'content_type_id', 'object_id', 'priority']
class ImageAttachmentFilterSet(BaseFilterSet): content_type = ContentTypeFilter() class Meta: model = ImageAttachment fields = ['id', 'content_type_id', 'object_id', 'name']