furher shorts improvements

This commit is contained in:
Ross
2025-04-07 11:34:10 +01:00
parent afa1379ce4
commit d387e32777
16 changed files with 795 additions and 111 deletions
+57 -22
View File
@@ -13,6 +13,7 @@ from shorts.models import (
Abnormality,
Examination,
Question,
QuestionFinding,
QuestionImage,
Region,
SampleAnswer,
@@ -29,10 +30,15 @@ from crispy_forms.layout import Submit, Layout, Div, Field, HTML
from crispy_forms.bootstrap import InlineRadios
class QuestionAnswerForm(ModelForm):
from dal import autocomplete
from autocomplete import widgets as htmx_widgets, Autocomplete, AutocompleteWidget, ModelAutocomplete, register as autocomplete_register
class QuestionSampleAnswerForm(ModelForm):
class Meta:
model = UserAnswer
fields = ("answer",)
model = Question
fields = []
class MarkQuestionForm(Form):
@@ -42,10 +48,10 @@ class MarkQuestionForm(Form):
marked_answers = CharField(required=False)
class QuestionAnswerForm(ModelForm):
class Meta:
model = Question
fields = []
#class QuestionAnswerForm(ModelForm):
# class Meta:
# model = Question
# fields = []
class QuestionForm(ModelForm):
@@ -93,6 +99,7 @@ class QuestionForm(ModelForm):
Field('examination', css_class='form-control'),
Div(InlineRadios('laterality', css_class='form-control'), css_class='clearfix clear-both'),
Field('history', css_class='form-control'),
Field('marking_guidance', css_class='form-control'),
Field('feedback', css_class='form-control'),
Field('open_access', css_class='form-control'),
HTML("<h4 class='clear-both' id='exams-label'>Exams</h4>"),
@@ -188,6 +195,7 @@ class QuestionForm(ModelForm):
# "site",
"feedback",
"history",
"marking_guidance",
"open_access",
]
# fields = ['question', 'feedback', 'subspecialty', 'references']
@@ -217,20 +225,20 @@ ImageFormSet = inlineformset_factory(
# max_num=10,
#)
#
#AnswerUpdateFormSet = inlineformset_factory(
# Question,
# SampleAnswer,
# fields=["answer", "status"],
# widgets={
# "answer": Textarea(
# attrs={"required": "false", "minlength": 2, "maxlength": 500, "rows": 3}
# )
# },
# exclude=[],
# can_delete=True,
# extra=0,
# max_num=10,
#)
SampleAnswerUpdateFormSet = inlineformset_factory(
Question,
SampleAnswer,
fields=["answer", "score", "proposed"],
widgets={
"answer": Textarea(
attrs={"required": "false", "minlength": 2, "maxlength": 500, "rows": 3}
)
},
exclude=[],
can_delete=True,
extra=0,
max_num=10,
)
# This should be made generic?
@@ -248,4 +256,31 @@ class ExamMarkerForm(ExamMarkerFormMixin):
class ExamGroupsForm(ExamGroupsFormMixin):
class Meta(ExamGroupsFormMixin.Meta):
model = Exam
model = Exam
class QuestionFindingForm(ModelForm):
class Meta:
model = QuestionFinding
exclude = ["question", "annotation_json", "viewport_json", "current_image_id_index"]
widgets = {
"findings": autocomplete.ModelSelect2Multiple(
url="atlas:finding-autocomplete"
),
"structures": autocomplete.ModelSelect2Multiple(
url="atlas:structure-autocomplete"
),
"conditions": autocomplete.ModelSelect2Multiple(
url="atlas:condition-autocomplete"
),
}
def __init__(self, *args, **kwargs):
if kwargs.get("question_id"):
initial = kwargs.setdefault("initial", {})
initial["question"] = kwargs.pop("question_id")
super(QuestionFindingForm, self).__init__(*args, **kwargs)
ModelForm.__init__(self, *args, **kwargs)