continue building examcollections
This commit is contained in:
+84
-10
@@ -17,6 +17,7 @@ from generic.models import (
|
||||
CidUser,
|
||||
CidUserGroup,
|
||||
Examination,
|
||||
ExamCollection,
|
||||
QuestionNote,
|
||||
Supervisor,
|
||||
UserGrades,
|
||||
@@ -333,6 +334,7 @@ class UserGroupExamForm(ModelForm):
|
||||
"physics_user_user_groups",
|
||||
"sba_user_user_groups",
|
||||
]
|
||||
|
||||
# users = UserUserGroupModelChoiceField(
|
||||
# required=False,
|
||||
# queryset=User.objects.all(),
|
||||
@@ -346,10 +348,10 @@ class UserGroupExamForm(ModelForm):
|
||||
# The widget for a ModelMultipleChoiceField expects
|
||||
# a list of primary key for the selected data.
|
||||
for groups in self.GROUP_TYPES:
|
||||
#instance.anatomy_cid_user_groups.clear()
|
||||
#obj = getattr(instance,groups)
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
# obj = getattr(instance,groups)
|
||||
initial[groups] = [
|
||||
t.pk for t in getattr(kwargs["instance"],groups).all()
|
||||
t.pk for t in getattr(kwargs["instance"], groups).all()
|
||||
]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
@@ -401,8 +403,8 @@ class UserGroupExamForm(ModelForm):
|
||||
old_save_m2m()
|
||||
|
||||
for groups in self.GROUP_TYPES:
|
||||
#instance.anatomy_cid_user_groups.clear()
|
||||
obj = getattr(instance,groups)
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
obj = getattr(instance, groups)
|
||||
obj.clear()
|
||||
for exam in self.cleaned_data[groups]:
|
||||
obj.add(exam.pk)
|
||||
@@ -438,10 +440,10 @@ class CidGroupExamForm(ModelForm):
|
||||
# The widget for a ModelMultipleChoiceField expects
|
||||
# a list of primary key for the selected data.
|
||||
for groups in self.GROUP_TYPES:
|
||||
#instance.anatomy_cid_user_groups.clear()
|
||||
#obj = getattr(instance,groups)
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
# obj = getattr(instance,groups)
|
||||
initial[groups] = [
|
||||
t.pk for t in getattr(kwargs["instance"],groups).all()
|
||||
t.pk for t in getattr(kwargs["instance"], groups).all()
|
||||
]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
@@ -493,8 +495,8 @@ class CidGroupExamForm(ModelForm):
|
||||
old_save_m2m()
|
||||
|
||||
for groups in self.GROUP_TYPES:
|
||||
#instance.anatomy_cid_user_groups.clear()
|
||||
obj = getattr(instance,groups)
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
obj = getattr(instance, groups)
|
||||
obj.clear()
|
||||
for exam in self.cleaned_data[groups]:
|
||||
obj.add(exam.pk)
|
||||
@@ -549,3 +551,75 @@ class SupervisorForm(ModelForm):
|
||||
class Meta:
|
||||
model = Supervisor
|
||||
exclude = ("",)
|
||||
|
||||
|
||||
class ExamCollectionForm(ModelForm):
|
||||
GROUP_TYPES = (
|
||||
("Rapid Exams", "rapids_exams", RapidsExam),
|
||||
("Long Exams", "longs_exams", LongsExam),
|
||||
("SBA Exams", "sbas_exams", SbasExam),
|
||||
("Physic Exams", "physics_exams", PhysicsExam),
|
||||
("Anatomy Exams", "anatomy_exams", AnatomyExam),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = ExamCollection
|
||||
exclude = ("",)
|
||||
|
||||
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.
|
||||
for name, reverse_prop, exam_obj in self.GROUP_TYPES:
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
# obj = getattr(instance,groups)
|
||||
initial[reverse_prop] = [
|
||||
t.pk for t in getattr(kwargs["instance"], reverse_prop).all()
|
||||
]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
|
||||
super(ExamCollectionForm, self).__init__(*args, **kwargs)
|
||||
|
||||
for name, reverse_prop, exam_obj in self.GROUP_TYPES:
|
||||
self.fields[reverse_prop] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=exam_obj.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(
|
||||
verbose_name=name, 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()
|
||||
|
||||
for name, reverse_prop, exam_obj in self.GROUP_TYPES:
|
||||
# instance.anatomy_cid_user_groups.clear()
|
||||
obj = getattr(instance, reverse_prop)
|
||||
obj.clear()
|
||||
for exam in self.cleaned_data[reverse_prop]:
|
||||
obj.add(exam)
|
||||
|
||||
self.save_m2m = save_m2m
|
||||
|
||||
# Do we need to save all changes now?
|
||||
# if commit:
|
||||
instance.save()
|
||||
self.save_m2m()
|
||||
|
||||
return instance
|
||||
|
||||
class ExamCollectionCloneForm(ModelForm):
|
||||
class Meta:
|
||||
model = ExamCollection
|
||||
fields = ("name", "date")
|
||||
|
||||
Reference in New Issue
Block a user