feat: implementing autocomplete for django admin pages.

This commit is contained in:
awais qureshi
2025-06-03 15:35:02 -04:00
parent 89509ecc53
commit 77f081286f

View File

@@ -2,7 +2,8 @@
from functools import wraps
from dal import autocomplete
from dal_select2.views import Select2ListView
from dal_select2.widgets import ListSelect2
from django_countries import countries
from config_models.admin import ConfigurationModelAdmin
@@ -314,14 +315,14 @@ class CourseEnrollmentAdmin(DisableEnrollmentAdminMixin, admin.ModelAdmin):
return super().get_queryset(request).select_related('user') # lint-amnesty, pylint: disable=no-member, super-with-arguments
@method_decorator(login_required, name='dispatch')
class LanguageAutocomplete(autocomplete.Select2ListView): # pylint: disable=no-member
class LanguageAutocomplete(Select2ListView):
def get_list(self):
if not self.request.user.is_staff:
return []
return [lang for lang in LANGUAGE_CHOICES if self.q.lower() in lang.lower()]
@method_decorator(login_required, name='dispatch')
class CountryAutocomplete(autocomplete.Select2ListView): # pylint: disable=no-member
class CountryAutocomplete(Select2ListView):
"""
Autocomplete view for selecting countries using Select2.
@@ -355,11 +356,11 @@ class UserProfileInlineForm(forms.ModelForm):
"""
language = forms.CharField(
required=False,
widget=autocomplete.ListSelect2(url='admin:language-autocomplete') # pylint: disable=no-member
widget=ListSelect2(url='admin:language-autocomplete') # pylint: disable=no-member
)
country = forms.CharField(
required=False,
widget=autocomplete.ListSelect2(url='admin:country-autocomplete') # pylint: disable=no-member
widget=ListSelect2(url='admin:country-autocomplete') # pylint: disable=no-member
)
class Meta: