.
This commit is contained in:
+29
-12
@@ -1,10 +1,36 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
|
|
||||||
from .models import AnatomyQuestion, CidUserAnswer
|
from .models import AnatomyQuestion, CidUserAnswer, Exam
|
||||||
|
|
||||||
#from generic.filters import UserAnswerFilter
|
#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 AnatomyUserAnswerFilter(django_filters.FilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model= CidUserAnswer
|
model= CidUserAnswer
|
||||||
@@ -18,17 +44,8 @@ class AnatomyUserAnswerFilter(django_filters.FilterSet):
|
|||||||
"updated",
|
"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):
|
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)
|
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
|
pass
|
||||||
@@ -55,6 +55,7 @@ class AnatomyQuestionForm(ModelForm):
|
|||||||
js = ["jsi18n.js", "tesseract.min.js"]
|
js = ["jsi18n.js", "tesseract.min.js"]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
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)
|
super(AnatomyQuestionForm, self).__init__(*args, **kwargs)
|
||||||
# self.fields['question'].widget.attrs = {'class': 'question-form', 'rows': 10, 'cols': 100}
|
# self.fields['question'].widget.attrs = {'class': 'question-form', 'rows': 10, 'cols': 100}
|
||||||
# self.fields['feedback'].widget.attrs = {'class': 'feedback-form', 'rows': 10, 'cols': 100}
|
# self.fields['feedback'].widget.attrs = {'class': 'feedback-form', 'rows': 10, 'cols': 100}
|
||||||
|
|||||||
+18
-19
@@ -12,25 +12,6 @@ from easy_thumbnails.exceptions import InvalidImageFormatError
|
|||||||
#from generic.tables import UserAnswerTable
|
#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):
|
class ImageColumn(tables.Column):
|
||||||
def render(self, value):
|
def render(self, value):
|
||||||
try:
|
try:
|
||||||
@@ -74,3 +55,21 @@ class AnatomyQuestionTable(tables.Table):
|
|||||||
"author",
|
"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
|
model = AnatomyQuestion
|
||||||
form_class = AnatomyQuestionForm
|
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):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(AnatomyQuestionCreateBase, self).get_context_data(**kwargs)
|
context = super(AnatomyQuestionCreateBase, self).get_context_data(**kwargs)
|
||||||
if self.request.POST:
|
if self.request.POST:
|
||||||
@@ -791,6 +796,11 @@ class AnatomyQuestionUpdate(LoginRequiredMixin, UpdateView):
|
|||||||
model = AnatomyQuestion
|
model = AnatomyQuestion
|
||||||
form_class = AnatomyQuestionForm
|
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):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(AnatomyQuestionUpdate, self).get_context_data(**kwargs)
|
context = super(AnatomyQuestionUpdate, self).get_context_data(**kwargs)
|
||||||
if self.request.POST:
|
if self.request.POST:
|
||||||
|
|||||||
Reference in New Issue
Block a user