This commit is contained in:
Ross
2021-04-28 10:49:19 +01:00
parent 7a3e02deac
commit 19e9f160f1
4 changed files with 59 additions and 32 deletions
+29 -12
View File
@@ -1,10 +1,36 @@
import django_filters
from .models import AnatomyQuestion, CidUserAnswer
from .models import AnatomyQuestion, CidUserAnswer, Exam
#from generic.filters import UserAnswerFilter
def get_exams(request):
if request is None:
return Exam.objects.none()
if not request.user.groups.filter(name="anatomy_checker").exists():
queryset = Exam.objects.filter(author__id=request.user.id)
else:
queryset = Exam.objects.all()
return queryset
class AnatomyQuestionFilter(django_filters.FilterSet):
exams = django_filters.ModelMultipleChoiceFilter(queryset=get_exams)
class Meta:
model = AnatomyQuestion
fields = ("question_type"
"examination",
"modality", "region",
"body_part", "created_date", "open_access", "author")
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None):
if not request.user.groups.filter(name="anatomy_checker").exists():
queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
super(AnatomyQuestionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
class AnatomyUserAnswerFilter(django_filters.FilterSet):
class Meta:
model= CidUserAnswer
@@ -18,17 +44,8 @@ class AnatomyUserAnswerFilter(django_filters.FilterSet):
"updated",
)
class AnatomyQuestionFilter(django_filters.FilterSet):
class Meta:
model = AnatomyQuestion
fields = ("question_type", "exams",
"examination",
"modality", "region",
"body_part", "created_date", "open_access", "author")
def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None):
if not request.user.groups.filter(name="anatomy_checker").exists():
if not request.user.groups.filter(name="rapid_checker").exists():
queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id)
super(AnatomyQuestionFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
super(AnatomyUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request)
pass
+1
View File
@@ -55,6 +55,7 @@ class AnatomyQuestionForm(ModelForm):
js = ["jsi18n.js", "tesseract.min.js"]
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user') # To get request.user. Do not use kwargs.pop('user', None) due to potential security hole
super(AnatomyQuestionForm, self).__init__(*args, **kwargs)
# self.fields['question'].widget.attrs = {'class': 'question-form', 'rows': 10, 'cols': 100}
# self.fields['feedback'].widget.attrs = {'class': 'feedback-form', 'rows': 10, 'cols': 100}
+19 -20
View File
@@ -12,25 +12,6 @@ from easy_thumbnails.exceptions import InvalidImageFormatError
#from generic.tables import UserAnswerTable
class AnatomyUserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
delete = tables.LinkColumn(
"anatomy:anatomy_user_answer_delete", text="Delete", args=[A("pk")], orderable=False
)
class Meta:
model = CidUserAnswer
template_name = "django_tables2/bootstrap4.html"
fields = (
"cid",
"question",
"answer",
#"answer_compare",
"exam",
"created",
"updated",
)
class ImageColumn(tables.Column):
def render(self, value):
try:
@@ -73,4 +54,22 @@ class AnatomyQuestionTable(tables.Table):
"open_access",
"author",
)
sequence = ("view", "image", "exams")
sequence = ("view", "image", "exams")
class AnatomyUserAnswerTable(tables.Table):
select = tables.CheckBoxColumn(accessor=("pk"))
delete = tables.LinkColumn(
"anatomy:anatomy_user_answer_delete", text="Delete", args=[A("pk")], orderable=False
)
class Meta:
model = CidUserAnswer
template_name = "django_tables2/bootstrap4.html"
fields = (
"cid",
"question",
"answer",
#"answer_compare",
"exam",
"created",
"updated",
)
+10
View File
@@ -691,6 +691,11 @@ class AnatomyQuestionCreateBase(LoginRequiredMixin, CreateView):
model = AnatomyQuestion
form_class = AnatomyQuestionForm
def get_form_kwargs(self):
kwargs = super(AnatomyQuestionCreateBase, self).get_form_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
def get_context_data(self, **kwargs):
context = super(AnatomyQuestionCreateBase, self).get_context_data(**kwargs)
if self.request.POST:
@@ -791,6 +796,11 @@ class AnatomyQuestionUpdate(LoginRequiredMixin, UpdateView):
model = AnatomyQuestion
form_class = AnatomyQuestionForm
def get_form_kwargs(self):
kwargs = super(AnatomyQuestionCreateBase, self).get_form_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
def get_context_data(self, **kwargs):
context = super(AnatomyQuestionUpdate, self).get_context_data(**kwargs)
if self.request.POST: