from django.forms import ModelForm, ModelMultipleChoiceField, ModelChoiceField, ChoiceField from django.forms import inlineformset_factory from rapids.models import Abnormality, Examination, Note, Rapid, RapidCreationDefault, RapidImage, Region, Answer from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms.widgets import RadioSelect, TextInput, Textarea class ExaminationForm(ModelForm): class Meta: model = Examination fields = ['examination'] class NoteForm(ModelForm): class Meta: model = Note fields = ['note'] class RegionForm(ModelForm): class Meta: model = Region fields = ['name'] class AbnormalityForm(ModelForm): class Meta: model = Abnormality fields = ['name'] class RapidCreationDefaultForm(ModelForm): class Meta: model = RapidCreationDefault fields = ['site'] exclude = ["author"] class RapidForm(ModelForm): class Media: # Django also includes a few javascript files necessary # for the operation of this form element. You need to # include # 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(RapidForm, 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['abnormality'] = ModelMultipleChoiceField( required=False, queryset=Abnormality.objects.all(), widget=FilteredSelectMultiple(verbose_name="Abnormality", is_stacked=False)) self.fields['region'] = ModelMultipleChoiceField( required=False, queryset=Region.objects.all(), widget=FilteredSelectMultiple(verbose_name="Region", is_stacked=False)) self.fields['examination'] = ModelMultipleChoiceField( queryset=Examination.objects.all(), widget=FilteredSelectMultiple(verbose_name="Examination", is_stacked=False)) self.fields['laterality'] = ChoiceField( choices=Rapid.LATERALITY_CHOICES, required=True, widget=RadioSelect()) class Meta: model = Rapid #fields = ['due_back'] #fields = '__all__' fields = [ "normal", "abnormality", "region", "laterality", "examination", "site", "feedback" ] #fields = ['question', 'feedback', 'subspecialty', 'references'] widgets = { # "normal": RadioSelect( # choices=[(True, 'Yes'), # (False, 'No')]) } ImageFormSet = inlineformset_factory(Rapid, RapidImage, fields=['image', 'feedback_image'], exclude=[], can_delete=True, extra=4, max_num=10, field_classes="testing") AnswerFormSet = inlineformset_factory( Rapid, Answer, fields=["answer", "status"], widgets={ "answer": Textarea( attrs={"required": "true", "minlength": 2, "maxlength": 500, "rows": 3} ) }, exclude=[], can_delete=True, extra=1, max_num=10, ) AnswerUpdateFormSet = inlineformset_factory( Rapid, Answer, fields=["answer", "status"], widgets={ "answer": Textarea( attrs={"required": "true", "minlength": 2, "maxlength": 500, "rows": 3} ) }, exclude=[], can_delete=True, extra=0, max_num=10, )