diff --git a/courses/models.py b/courses/models.py index 1c3c41a..4916f00 100755 --- a/courses/models.py +++ b/courses/models.py @@ -407,7 +407,10 @@ class Lesson(models.Model): video = gen_vzaar_bb(self.video_id) if video: self.video = video + must_rebuild_map = False if Lesson.objects.filter(theme=self.theme, sort=self.sort).exclude(id=self.id).exists(): + # Обновить текущий урок с новым порядком, не вызывая при этом метод save() + Lesson.objects.filter(id=self.id).update(sort=self.sort) # Переформировать порядок test_in = self.sort + 1 for lesson in Lesson.objects.filter(theme=self.theme, sort__gte=self.sort).exclude(id=self.id): @@ -415,8 +418,11 @@ class Lesson(models.Model): lesson.sort = test_in lesson.save() test_in += 1 - self.token = self.course.build_map(material=self) + must_rebuild_map = True super(Lesson, self).save(*args, **kwargs) + # Переформировать карту после сохранения текущего урока + if must_rebuild_map: + self.course.build_map() class Meta: verbose_name = u'Урок' @@ -474,7 +480,10 @@ class Homework(models.Model): return result def save(self, *args, **kwargs): + must_rebuild_map = False if Homework.objects.filter(theme=self.theme, sort=self.sort).exclude(id=self.id).exists(): + # Обновить текущее дз с новым порядком, не вызывая при этом метод save() + Homework.objects.filter(id=self.id).update(sort=self.sort) # Переформировать порядок test_in = self.sort + 1 for homework in Homework.objects.filter(theme=self.theme, sort__gte=self.sort).exclude(id=self.id): @@ -482,8 +491,11 @@ class Homework(models.Model): homework.sort = test_in homework.save() test_in += 1 - self.token = self.course.build_map(material=self) + must_rebuild_map = True super(Homework, self).save(*args, **kwargs) + # Переформировать карту после сохранения текущего дз + if must_rebuild_map: + self.course.build_map() class Meta: verbose_name = u'Добашнее задание' @@ -541,7 +553,10 @@ class Exam(models.Model): return self.theme.get_title() def save(self, *args, **kwargs): + must_rebuild_map = False if Exam.objects.filter(theme=self.theme, sort=self.sort).exclude(id=self.id).exists(): + # Обновить текущий экзамен с новым порядком, не вызывая при этом метод save() + Exam.objects.filter(id=self.id).update(sort=self.sort) # Переформировать порядок test_in = self.sort + 1 for exam in Exam.objects.filter(theme=self.theme, sort__gte=self.sort).exclude(id=self.id): @@ -549,8 +564,11 @@ class Exam(models.Model): exam.sort = test_in exam.save() test_in += 1 - self.token = self.course.build_map(material=self) + must_rebuild_map = True super(Exam, self).save(*args, **kwargs) + # Переформировать карту после сохранения текущего экзамена + if must_rebuild_map: + self.course.build_map() class Meta: verbose_name = u'Экзамен'