From fa578390da8145489839be399e9cca5cb8138ae0 Mon Sep 17 00:00:00 2001 From: Ross Date: Thu, 24 Feb 2022 19:23:17 +0000 Subject: [PATCH] . --- rapids/forms.py | 26 ++++++++++++++++++++++++-- rapids/views.py | 19 ++++++------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/rapids/forms.py b/rapids/forms.py index 71d9c069..66880b6f 100755 --- a/rapids/forms.py +++ b/rapids/forms.py @@ -131,9 +131,31 @@ class RapidForm(ModelForm): instance = ModelForm.save(self, False) instance.save() - for exam in self.cleaned_data["exams"]: - exam.exam_questions.add(instance) + old_exams = instance.exams + new_exams = self.cleaned_data["exams"] + + for exam in old_exams: + if exam in new_exams: + exam.exam_questions.add(instance) + else: + exam.exam_questions.remove(instance) + + # # Prepare a 'save_m2m' method for the form, + # old_save_m2m = self.save_m2m + # + # def save_m2m(): + # old_save_m2m() + # # This is where we actually link the pizza with toppings + # instance.exams.clear() + # for exam in self.cleaned_data["exams"]: + # instance.exams.add(exam) + # + # self.save_m2m = save_m2m + # + # # Do we need to save all changes now? + # # if commit: + # instance.save() self.save_m2m() return instance diff --git a/rapids/views.py b/rapids/views.py index ab60a555..b46992df 100755 --- a/rapids/views.py +++ b/rapids/views.py @@ -370,19 +370,12 @@ class RapidUpdate( answer_formset.save() # restore exam orders - #wanted_exams = form["exams"].data - #for exam in self.object.exams.all(): - # # Only readd if exam is still added - # # There is probably a better way to do this - # if str(exam.pk) in wanted_exams: - # if exam in exam_orders and self.object in exam_orders[exam]: - # print(exam_orders[exam]) - # exam.exam_questions.set(exam_orders[exam]) - # exam.save() - # else: # Otherwise remove it - # if exam in exam_orders and self.object in exam_orders[exam]: - # exam.exam_questions.set(exam_orders[exam]) - # exam.save() + wanted_exams = form["exams"].data + for exam in self.object.exams.all(): + if exam in exam_orders and self.object in exam_orders[exam]: + print(exam_orders[exam]) + exam.exam_questions.set(exam_orders[exam]) + exam.save() return response else: