.
This commit is contained in:
+188
-188
@@ -1,189 +1,189 @@
|
||||
from django.forms import (
|
||||
Form,
|
||||
ModelForm,
|
||||
ModelMultipleChoiceField,
|
||||
ModelChoiceField,
|
||||
ChoiceField,
|
||||
CharField,
|
||||
HiddenInput,
|
||||
)
|
||||
from django.forms import inlineformset_factory
|
||||
|
||||
from generic.models import CidUser, CidUserGroup, 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
|
||||
|
||||
|
||||
from physics.models import CidUserAnswer as PhysicsCidUserAnswer, Question
|
||||
from physics.models import Exam as PhysicsExam
|
||||
from physics.models import Question as SbasQuestion
|
||||
|
||||
from anatomy.models import CidUserAnswer as AnatomyCidUserAnswer
|
||||
from anatomy.models import Exam as AnatomyExam
|
||||
from anatomy.models import AnatomyQuestion
|
||||
from anatomy.models import Answer as AnatomyAnswer
|
||||
|
||||
from rapids.models import CidUserAnswer as RapidsCidUserAnswer
|
||||
from rapids.models import Exam as RapidsExam
|
||||
from rapids.models import Rapid
|
||||
from rapids.models import Answer as RapidAnswer
|
||||
|
||||
from longs.models import CidUserAnswer as LongsCidUserAnswer
|
||||
from longs.models import Exam as LongsExam
|
||||
from longs.models import Long
|
||||
|
||||
from sbas.models import CidUserAnswer as SbasCidUserAnswer
|
||||
from sbas.models import Exam as SbasExam
|
||||
from sbas.models import Question as SbasQuestion
|
||||
|
||||
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):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.get("instance"):
|
||||
# We get the 'initial' keyword argument or initialize it
|
||||
# as a dict if it didn't exist.
|
||||
initial = kwargs.setdefault("initial", {})
|
||||
# The widget for a ModelMultipleChoiceField expects
|
||||
# a list of primary key for the selected data.
|
||||
initial["physics_exams"] = [t.pk for t in kwargs["instance"].physics_exams.all()]
|
||||
initial["anatomy_exams"] = [t.pk for t in kwargs["instance"].anatomy_exams.all()]
|
||||
initial["sba_exams"] = [t.pk for t in kwargs["instance"].sba_exams.all()]
|
||||
initial["rapid_exams"] = [t.pk for t in kwargs["instance"].rapid_exams.all()]
|
||||
initial["longs_exams"] = [t.pk for t in kwargs["instance"].longs_exams.all()]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
|
||||
super(CidUserForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields["physics_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=PhysicsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Physics Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["anatomy_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=AnatomyExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Anatomy Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["sba_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=SbasExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="SBA Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["rapid_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=RapidsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Rapid Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["longs_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=LongsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Long Exams", is_stacked=False),
|
||||
)
|
||||
|
||||
def save(self, commit=True):
|
||||
# Get the unsaved Long instance
|
||||
instance = ModelForm.save(self, False)
|
||||
|
||||
# Prepare a 'save_m2m' method for the form,
|
||||
old_save_m2m = self.save_m2m
|
||||
|
||||
def save_m2m():
|
||||
old_save_m2m()
|
||||
instance.physics_exams.clear()
|
||||
for physics_exams in self.cleaned_data["physics_exams"]:
|
||||
instance.physics_exams.add(physics_exams.pk)
|
||||
instance.anatomy_exams.clear()
|
||||
for anatomy_exams in self.cleaned_data["anatomy_exams"]:
|
||||
instance.anatomy_exams.add(anatomy_exams.pk)
|
||||
instance.sba_exams.clear()
|
||||
for sba_exams in self.cleaned_data["sba_exams"]:
|
||||
instance.sba_exams.add(sba_exams.pk)
|
||||
instance.rapid_exams.clear()
|
||||
for rapid_exams in self.cleaned_data["rapid_exams"]:
|
||||
instance.rapid_exams.add(rapid_exams.pk)
|
||||
instance.longs_exams.clear()
|
||||
for longs_exams in self.cleaned_data["longs_exams"]:
|
||||
instance.longs_exams.add(longs_exams.pk)
|
||||
|
||||
self.save_m2m = save_m2m
|
||||
|
||||
# Do we need to save all changes now?
|
||||
# if commit:
|
||||
instance.save()
|
||||
self.save_m2m()
|
||||
|
||||
return instance
|
||||
|
||||
class Meta:
|
||||
model = CidUser
|
||||
fields = [
|
||||
"passcode",
|
||||
"active",
|
||||
"internal_candidate",
|
||||
"name",
|
||||
"email",
|
||||
"supervisor_email",
|
||||
"login_email_sent",
|
||||
"results_email_sent",
|
||||
"group",
|
||||
]
|
||||
|
||||
class CidUserGroupForm(ModelForm):
|
||||
class Meta:
|
||||
model = CidUserGroup
|
||||
from django.forms import (
|
||||
Form,
|
||||
ModelForm,
|
||||
ModelMultipleChoiceField,
|
||||
ModelChoiceField,
|
||||
ChoiceField,
|
||||
CharField,
|
||||
HiddenInput,
|
||||
)
|
||||
from django.forms import inlineformset_factory
|
||||
|
||||
from generic.models import CidUser, CidUserGroup, 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
|
||||
|
||||
|
||||
from physics.models import CidUserAnswer as PhysicsCidUserAnswer, Question
|
||||
from physics.models import Exam as PhysicsExam
|
||||
from physics.models import Question as SbasQuestion
|
||||
|
||||
from anatomy.models import CidUserAnswer as AnatomyCidUserAnswer
|
||||
from anatomy.models import Exam as AnatomyExam
|
||||
from anatomy.models import AnatomyQuestion
|
||||
from anatomy.models import Answer as AnatomyAnswer
|
||||
|
||||
from rapids.models import CidUserAnswer as RapidsCidUserAnswer
|
||||
from rapids.models import Exam as RapidsExam
|
||||
from rapids.models import Rapid
|
||||
from rapids.models import Answer as RapidAnswer
|
||||
|
||||
from longs.models import CidUserAnswer as LongsCidUserAnswer
|
||||
from longs.models import Exam as LongsExam
|
||||
from longs.models import Long
|
||||
|
||||
from sbas.models import CidUserAnswer as SbasCidUserAnswer
|
||||
from sbas.models import Exam as SbasExam
|
||||
from sbas.models import Question as SbasQuestion
|
||||
|
||||
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):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.get("instance"):
|
||||
# We get the 'initial' keyword argument or initialize it
|
||||
# as a dict if it didn't exist.
|
||||
initial = kwargs.setdefault("initial", {})
|
||||
# The widget for a ModelMultipleChoiceField expects
|
||||
# a list of primary key for the selected data.
|
||||
initial["physics_exams"] = [t.pk for t in kwargs["instance"].physics_exams.all()]
|
||||
initial["anatomy_exams"] = [t.pk for t in kwargs["instance"].anatomy_exams.all()]
|
||||
initial["sba_exams"] = [t.pk for t in kwargs["instance"].sba_exams.all()]
|
||||
initial["rapid_exams"] = [t.pk for t in kwargs["instance"].rapid_exams.all()]
|
||||
initial["longs_exams"] = [t.pk for t in kwargs["instance"].longs_exams.all()]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
|
||||
super(CidUserForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields["physics_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=PhysicsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Physics Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["anatomy_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=AnatomyExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Anatomy Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["sba_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=SbasExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="SBA Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["rapid_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=RapidsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Rapid Exams", is_stacked=False),
|
||||
)
|
||||
self.fields["longs_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=LongsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Long Exams", is_stacked=False),
|
||||
)
|
||||
|
||||
def save(self, commit=True):
|
||||
# Get the unsaved Long instance
|
||||
instance = ModelForm.save(self, False)
|
||||
|
||||
# Prepare a 'save_m2m' method for the form,
|
||||
old_save_m2m = self.save_m2m
|
||||
|
||||
def save_m2m():
|
||||
old_save_m2m()
|
||||
instance.physics_exams.clear()
|
||||
for physics_exams in self.cleaned_data["physics_exams"]:
|
||||
instance.physics_exams.add(physics_exams.pk)
|
||||
instance.anatomy_exams.clear()
|
||||
for anatomy_exams in self.cleaned_data["anatomy_exams"]:
|
||||
instance.anatomy_exams.add(anatomy_exams.pk)
|
||||
instance.sba_exams.clear()
|
||||
for sba_exams in self.cleaned_data["sba_exams"]:
|
||||
instance.sba_exams.add(sba_exams.pk)
|
||||
instance.rapid_exams.clear()
|
||||
for rapid_exams in self.cleaned_data["rapid_exams"]:
|
||||
instance.rapid_exams.add(rapid_exams.pk)
|
||||
instance.longs_exams.clear()
|
||||
for longs_exams in self.cleaned_data["longs_exams"]:
|
||||
instance.longs_exams.add(longs_exams.pk)
|
||||
|
||||
self.save_m2m = save_m2m
|
||||
|
||||
# Do we need to save all changes now?
|
||||
# if commit:
|
||||
instance.save()
|
||||
self.save_m2m()
|
||||
|
||||
return instance
|
||||
|
||||
class Meta:
|
||||
model = CidUser
|
||||
fields = [
|
||||
"passcode",
|
||||
"active",
|
||||
"internal_candidate",
|
||||
"name",
|
||||
"email",
|
||||
"supervisor_email",
|
||||
"login_email_sent",
|
||||
"results_email_sent",
|
||||
"group",
|
||||
]
|
||||
|
||||
class CidUserGroupForm(ModelForm):
|
||||
class Meta:
|
||||
model = CidUserGroup
|
||||
fields = ["name", "archive"]
|
||||
Reference in New Issue
Block a user