__init__.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django import forms
  2. from django.utils.translation import gettext as _
  3. from netbox.search import LookupTypes
  4. from netbox.search.backends import search_backend
  5. from utilities.forms import BootstrapMixin, StaticSelect, StaticSelectMultiple
  6. from .base import *
  7. LOOKUP_CHOICES = (
  8. ('', _('Partial match')),
  9. (LookupTypes.EXACT, _('Exact match')),
  10. (LookupTypes.STARTSWITH, _('Starts with')),
  11. (LookupTypes.ENDSWITH, _('Ends with')),
  12. )
  13. class SearchForm(BootstrapMixin, forms.Form):
  14. q = forms.CharField(
  15. label='Search',
  16. widget=forms.TextInput(
  17. attrs={
  18. 'hx-get': '',
  19. 'hx-target': '#object_list',
  20. 'hx-trigger': 'keyup[target.value.length >= 3] changed delay:500ms',
  21. }
  22. )
  23. )
  24. obj_types = forms.MultipleChoiceField(
  25. choices=[],
  26. required=False,
  27. label='Object type(s)',
  28. widget=StaticSelectMultiple()
  29. )
  30. lookup = forms.ChoiceField(
  31. choices=LOOKUP_CHOICES,
  32. initial=LookupTypes.PARTIAL,
  33. required=False,
  34. widget=StaticSelect()
  35. )
  36. def __init__(self, *args, **kwargs):
  37. super().__init__(*args, **kwargs)
  38. self.fields['obj_types'].choices = search_backend.get_object_types()