From 27ae1ad6ad1eedede10ae885571b51fb8fc48e41 Mon Sep 17 00:00:00 2001 From: Ross Date: Wed, 20 Oct 2021 22:42:38 +0100 Subject: [PATCH] . --- anatomy/forms.py | 9 +++++---- anatomy/urls.py | 5 +++++ anatomy/views.py | 15 +++++++++++++++ rad/settings.py | 4 +++- requirements.txt | 2 +- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/anatomy/forms.py b/anatomy/forms.py index 61f1e114..45e39223 100644 --- a/anatomy/forms.py +++ b/anatomy/forms.py @@ -25,7 +25,7 @@ from generic.models import Examination from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms.widgets import RadioSelect, TextInput, Textarea -import select2.fields +from dal import autocomplete class AnatomyAnswerForm(ModelForm): class Meta: @@ -90,9 +90,10 @@ class AnatomyQuestionForm(ModelForm): required=False, queryset=Structure.objects.all(), ) - #self.fields["structure"] =select2.fields.ChoiceField( - #choices=Structure.objects.all(), - #overlay="Choose an author...") + self.fields["structure"] = ModelChoiceField( + queryset=Structure.objects.all(), + widget=autocomplete.ModelSelect2(url='anatomy:struture-autocomplete') + ) self.fields["examination"] = ModelChoiceField( required=False, diff --git a/anatomy/urls.py b/anatomy/urls.py index 7ce85495..f358b0a3 100644 --- a/anatomy/urls.py +++ b/anatomy/urls.py @@ -147,4 +147,9 @@ urlpatterns = [ views.GenericViews.user_answer_delete_multiple, name="user_answer_delete_multiple", ), + path( + "structure-autocomplete", + views.StructureAutocomplete.as_view(), + name="structure-autocomplete", + ), ] diff --git a/anatomy/views.py b/anatomy/views.py index e070360c..df32968e 100644 --- a/anatomy/views.py +++ b/anatomy/views.py @@ -24,6 +24,8 @@ from django.http import Http404, JsonResponse from django.http import HttpResponseRedirect, HttpResponse +from dal import autocomplete + from .forms import ( AnatomyAnswerForm, AnswerFormSet, @@ -998,3 +1000,16 @@ GenericViews = GenericViewBase("anatomy", AnatomyQuestion, CidUserAnswer, Exam) class ExamClone(ExamCloneMixin, ExamCreate): """Clone exam view""" + +class StructureAutocomplete(autocomplete.Select2QuerySetView): + def get_queryset(self): + # Don't forget to filter out results depending on the visitor ! + if not self.request.user.is_authenticated: + return Structure.objects.none() + + qs = Structure.objects.all() + + if self.q: + qs = qs.filter(name__istartswith=self.q) + + return qs \ No newline at end of file diff --git a/rad/settings.py b/rad/settings.py index 6cd8850b..7acf0c32 100644 --- a/rad/settings.py +++ b/rad/settings.py @@ -44,6 +44,9 @@ INSTALLED_APPS = [ "filer", "mptt", "sortedm2m", + "dal", + "dal_select2", + "dal_queryset_sequence", 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -55,7 +58,6 @@ INSTALLED_APPS = [ "dbbackup", "rest_framework", "tinymce", - "select2", ] MIDDLEWARE = [ diff --git a/requirements.txt b/requirements.txt index e66fbe8e..a766e7f9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,4 +21,4 @@ djangorestframework django-tinymce django-zipview pymemcache -django-select2-forms \ No newline at end of file +django-autocomplete-light