Add Subspecialty autocomplete and filter to QuestionFilter
This commit is contained in:
+6
-1
@@ -2,7 +2,7 @@ from django.urls import path, include
|
|||||||
from django.views.generic import RedirectView, TemplateView
|
from django.views.generic import RedirectView, TemplateView
|
||||||
|
|
||||||
|
|
||||||
from atlas.models import Condition, Finding, Presentation, Structure
|
from atlas.models import Condition, Finding, Presentation, Structure, Subspecialty
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
app_name = "atlas"
|
app_name = "atlas"
|
||||||
@@ -528,6 +528,11 @@ urlpatterns = [
|
|||||||
views.StructureAutocomplete.as_view(model=Structure, create_field="name", validate_create=True),
|
views.StructureAutocomplete.as_view(model=Structure, create_field="name", validate_create=True),
|
||||||
name="structure-autocomplete",
|
name="structure-autocomplete",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"subspecialty-autocomplete",
|
||||||
|
views.SubspecialtyAutocomplete.as_view(model=Subspecialty, create_field="name"),
|
||||||
|
name="subspecialty-autocomplete",
|
||||||
|
),
|
||||||
path("presentation/", views.PresentationView.as_view(), name="presentation_view"),
|
path("presentation/", views.PresentationView.as_view(), name="presentation_view"),
|
||||||
path(
|
path(
|
||||||
"presentation/<int:pk>", views.presentation_detail, name="presentation_detail"
|
"presentation/<int:pk>", views.presentation_detail, name="presentation_detail"
|
||||||
|
|||||||
@@ -1978,6 +1978,24 @@ class StructureAutocomplete(autocomplete.Select2QuerySetView):
|
|||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
|
||||||
|
class SubspecialtyAutocomplete(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 Subspecialty.objects.none()
|
||||||
|
|
||||||
|
qs = Subspecialty.objects.all()
|
||||||
|
|
||||||
|
if self.q:
|
||||||
|
# This raises a fielderror which breaks creating a new item if not caught
|
||||||
|
try:
|
||||||
|
qs = qs.filter(name__icontains=self.q)
|
||||||
|
except FieldError:
|
||||||
|
return Subspecialty.objects.none()
|
||||||
|
|
||||||
|
return qs
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
# @user_is_atlas_editor
|
# @user_is_atlas_editor
|
||||||
def categories_list(request):
|
def categories_list(request):
|
||||||
|
|||||||
+8
-3
@@ -2,7 +2,7 @@ import django_filters
|
|||||||
from dal import autocomplete
|
from dal import autocomplete
|
||||||
|
|
||||||
from .models import Category, Question, UserAnswer, Exam
|
from .models import Category, Question, UserAnswer, Exam
|
||||||
from atlas.models import Condition, Structure, Finding, Presentation
|
from atlas.models import Condition, Structure, Finding, Presentation, Subspecialty
|
||||||
|
|
||||||
#from generic.filters import UserAnswerFilter
|
#from generic.filters import UserAnswerFilter
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
@@ -34,7 +34,12 @@ def get_authors(request):
|
|||||||
class QuestionFilter(django_filters.FilterSet):
|
class QuestionFilter(django_filters.FilterSet):
|
||||||
exams = django_filters.ModelMultipleChoiceFilter(queryset=get_exams, null_label="No exam")
|
exams = django_filters.ModelMultipleChoiceFilter(queryset=get_exams, null_label="No exam")
|
||||||
author = django_filters.ModelMultipleChoiceFilter(queryset=get_authors, null_label="No author")
|
author = django_filters.ModelMultipleChoiceFilter(queryset=get_authors, null_label="No author")
|
||||||
category = django_filters.ModelChoiceFilter(queryset=Category.objects.all(),null_label="Uncategorised")
|
category = django_filters.ModelMultipleChoiceFilter(queryset=Category.objects.all(),null_label="Uncategorised")
|
||||||
|
subspecialty = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
queryset=Subspecialty.objects.all(),
|
||||||
|
widget=autocomplete.ModelSelect2Multiple(url='atlas:subspecialty-autocomplete'),
|
||||||
|
label='Subspecialty',
|
||||||
|
)
|
||||||
condition = django_filters.ModelMultipleChoiceFilter(
|
condition = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=Condition.objects.all(),
|
queryset=Condition.objects.all(),
|
||||||
widget=autocomplete.ModelSelect2Multiple(url='atlas:condition-autocomplete'),
|
widget=autocomplete.ModelSelect2Multiple(url='atlas:condition-autocomplete'),
|
||||||
@@ -57,7 +62,7 @@ class QuestionFilter(django_filters.FilterSet):
|
|||||||
)
|
)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Question
|
model = Question
|
||||||
fields = ("exams", "created_date", "condition", "structure", "finding", "presentation")
|
fields = ("exams", "created_date", "condition", "structure", "finding", "presentation", "category", "subspecialty")
|
||||||
|
|
||||||
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None):
|
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None):
|
||||||
if not request.user.groups.filter(name="sba_checker").exists():
|
if not request.user.groups.filter(name="sba_checker").exists():
|
||||||
|
|||||||
Reference in New Issue
Block a user