from django.forms import ( Form, ModelForm, ModelMultipleChoiceField, ModelChoiceField, ChoiceField, CharField, HiddenInput, ) from django.forms import inlineformset_factory from generic.models import CidUser, Examination, QuestionNote from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms.widgets import RadioSelect, TextInput, Textarea from rapids.models import Rapid from anatomy.models import AnatomyQuestion from longs.models import Long from django.shortcuts import render, get_object_or_404, redirect from django.contrib.contenttypes.models import ContentType class ExaminationForm(ModelForm): class Meta: model = Examination fields = ["examination"] class QuestionNoteForm(ModelForm): class Meta: model = QuestionNote fields = ["content_type", "object_id", "author", "note_type", "note"] widgets = {"content_type": HiddenInput(), "object_id": HiddenInput()} def __init__(self, *args, **kwargs): question_type = kwargs.pop("question_type") pk = kwargs.pop("pk") user = kwargs.pop("user") # if question_type == "rapid": # question = Rapid # content_type = ContentType.objects.get(model="rapid") # elif question_type == "anatomy": # question = AnatomyQuestion # content_type = ContentType.objects.get(model="anatomyquestion") # elif question_type == "long": # question = Long # content_type = ContentType.objects.get(model="long") # else: # raise PermissionError() # get_object_or_404(question, pk=pk) # We get the 'initial' keyword argument or initialize it # as a dict if it didn't exist. # if kwargs.get("instance"): ModelForm.__init__(self, *args, **kwargs) super(QuestionNoteForm, self).__init__(*args, **kwargs) # initial = kwargs.setdefault("initial", {}) ## The widget for a ModelMultipleChoiceField expects ## a list of primary key for the selected data. ##initial["content_type"] = question ##initial["content_id"] = pk # self.fields["content_type"].initial = content_type # self.fields["object_id"].initial = pk class CidUserForm(ModelForm): class Meta: model = CidUser fields = [ "passcode", "active", "internal_candidate", "name", "email", "supervisor_email", ]