.
This commit is contained in:
+29
-12
@@ -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
|
||||
@@ -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
@@ -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",
|
||||
)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user