| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import django_filters
- from django.db.models import Q
- from .models import Secret, SecretRole
- from dcim.models import Device
- class SecretFilter(django_filters.FilterSet):
- q = django_filters.CharFilter(
- method='search',
- label='Search',
- )
- role_id = django_filters.ModelMultipleChoiceFilter(
- name='role',
- queryset=SecretRole.objects.all(),
- label='Role (ID)',
- )
- role = django_filters.ModelMultipleChoiceFilter(
- name='role__slug',
- queryset=SecretRole.objects.all(),
- to_field_name='slug',
- label='Role (slug)',
- )
- device_id = django_filters.ModelMultipleChoiceFilter(
- name='device',
- queryset=Device.objects.all(),
- label='Device (ID)',
- )
- device = django_filters.ModelMultipleChoiceFilter(
- name='device',
- queryset=Device.objects.all(),
- to_field_name='name',
- label='Device (name)',
- )
- class Meta:
- model = Secret
- fields = ['name']
- def search(self, queryset, name, value):
- if not value.strip():
- return queryset
- return queryset.filter(
- Q(name__icontains=value) |
- Q(device__name__icontains=value)
- )
|