Files
penracourses/longs/forms.py
T
Ross ef915e5806 .
2021-02-05 12:01:08 +00:00

150 lines
4.0 KiB
Python
Executable File

from django.forms import (
Form,
ModelForm,
ModelMultipleChoiceField,
ModelChoiceField,
ChoiceField,
CharField,
)
from django.forms import inlineformset_factory
from longs.models import (
#Examination,
Note,
Long,
LongSeries,
LongSeriesImage,
LongCreationDefault,
CidUserAnswer,
Exam,
)
from anatomy.models import Modality
from generic.models import Examination, Condition, Sign
#from generic.models import Examination, Site, Condition, Sign
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.forms.widgets import RadioSelect, TextInput, Textarea
class LongAnswerForm(ModelForm):
class Meta:
model = CidUserAnswer
fields = ("answer_observations","answer_interpretation","answer_principle_diagnosis","answer_differential_diagnosis","answer_management",)
class MarkLongQuestionForm(Form):
# correct = forms.CharField(required=False)
# half_correct = forms.CharField(required=False)
# incorrect = forms.CharField(required=False)
marked_answers = CharField(required=False)
class ExaminationForm(ModelForm):
class Meta:
model = Examination
fields = ["examination"]
class NoteForm(ModelForm):
class Meta:
model = Note
fields = ["note"]
class LongCreationDefaultForm(ModelForm):
class Meta:
model = LongCreationDefault
#fields = ["site"]
exclude = ["author"]
class LongSeriesForm(ModelForm):
class Media:
# Django also includes a few javascript files necessary
# for the operation of this form element. You need to
# include <script src="/admin/jsi18n"></script>
# in the template.
css = {
"all": ["css/widgets.css"],
}
# Adding this javascript is crucial
js = ["jsi18n.js", "tesseract.min.js"]
def __init__(self, *args, **kwargs):
super(LongSeriesForm, self).__init__(*args, **kwargs)
self.fields["examination"] = ModelChoiceField(
queryset=Examination.objects.all(),
widget=FilteredSelectMultiple(verbose_name="Examination", is_stacked=False),
)
self.fields["modality"] = ModelChoiceField(
required=True,
queryset=Modality.objects.all(),
)
class Meta:
model = LongSeries
exclude = []
class LongForm(ModelForm):
class Media:
# Django also includes a few javascript files necessary
# for the operation of this form element. You need to
# include <script src="/admin/jsi18n"></script>
# in the template.
css = {
"all": ["css/widgets.css"],
}
# Adding this javascript is crucial
js = ["jsi18n.js", "tesseract.min.js"]
def __init__(self, *args, **kwargs):
super(LongForm, 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}
#self.fields["examination"] = ModelMultipleChoiceField(
# queryset=Examination.objects.all(),
# widget=FilteredSelectMultiple(verbose_name="Examination", is_stacked=False),
#)
class Meta:
model = Long
# fields = ['due_back']
# fields = '__all__'
fields = [
#"examination",
#"site",
"feedback",
]
# fields = ['question', 'feedback', 'subspecialty', 'references']
widgets = {
# "normal": RadioSelect(
# choices=[(True, 'Yes'),
# (False, 'No')])
}
SeriesFormSet = inlineformset_factory(
Long,
LongSeries,
exclude=[],
can_delete=True,
extra=4,
max_num=10,
field_classes="testing",
)
LongSeriesImageFormSet = inlineformset_factory(
LongSeries,
LongSeriesImage,
exclude=[],
can_delete=True,
extra=4,
max_num=2000,
field_classes="testing",
)