filters.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import django_filters
  2. from dcim.models import Site
  3. from circuits.models import Provider, Circuit, CircuitType
  4. class CircuitFilter(django_filters.FilterSet):
  5. q = django_filters.MethodFilter(
  6. action='search',
  7. label='Search',
  8. )
  9. provider_id = django_filters.ModelMultipleChoiceFilter(
  10. name='provider',
  11. queryset=Provider.objects.all(),
  12. label='Provider (ID)',
  13. )
  14. provider = django_filters.ModelMultipleChoiceFilter(
  15. name='provider',
  16. queryset=Provider.objects.all(),
  17. to_field_name='slug',
  18. label='Provider (slug)',
  19. )
  20. type_id = django_filters.ModelMultipleChoiceFilter(
  21. name='type',
  22. queryset=CircuitType.objects.all(),
  23. label='Circuit type (ID)',
  24. )
  25. type = django_filters.ModelMultipleChoiceFilter(
  26. name='type',
  27. queryset=CircuitType.objects.all(),
  28. to_field_name='slug',
  29. label='Circuit type (slug)',
  30. )
  31. site_id = django_filters.ModelMultipleChoiceFilter(
  32. name='site',
  33. queryset=Site.objects.all(),
  34. label='Site (ID)',
  35. )
  36. site = django_filters.ModelMultipleChoiceFilter(
  37. name='site',
  38. queryset=Site.objects.all(),
  39. to_field_name='slug',
  40. label='Site (slug)',
  41. )
  42. class Meta:
  43. model = Circuit
  44. fields = ['q', 'provider_id', 'provider', 'type_id', 'type', 'site_id', 'site', 'interface', 'install_date']
  45. def search(self, queryset, value):
  46. value = value.strip()
  47. return queryset.filter(cid__icontains=value)