X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/07096ee18c78a330205e0f0a656dee1378ceb8c2..c5f4d6f7fc2c876a56e7fcac2a9965e64f05c191:/catalogue/models.py diff --git a/catalogue/models.py b/catalogue/models.py index 0c3a54c..916c5b1 100644 --- a/catalogue/models.py +++ b/catalogue/models.py @@ -2,7 +2,7 @@ from django.core.files import File from django.core.urlresolvers import reverse from django.db import models from jsonfield import JSONField -from curriculum.models import Level +from curriculum.models import Level, Curriculum, CurriculumCourse class Section(models.Model): @@ -35,7 +35,7 @@ class Section(models.Model): lessons = [Lesson.objects.get(slug=part.slug) for part in wldoc.book_info.parts] except Lesson.DoesNotExist, e: - raise cls.IncompleteError(e) + raise cls.IncompleteError(part.slug) slug = wldoc.book_info.url.slug try: @@ -71,6 +71,7 @@ class Lesson(models.Model): type = models.CharField(max_length=15, db_index=True) order = models.IntegerField(db_index=True) dc = JSONField(default='{}') + curriculum_courses = models.ManyToManyField(CurriculumCourse) xml_file = models.FileField(upload_to="catalogue/lesson/xml", null=True, blank=True) # FIXME: slug in paths @@ -110,7 +111,7 @@ class Lesson(models.Model): try: lesson = cls.objects.get(slug=slug) except cls.DoesNotExist: - lesson = cls(slug=slug) + lesson = cls(slug=slug, order=0) lesson.attachment_set.all().delete() for att_name, att_file in infile.attachments.items(): @@ -126,10 +127,7 @@ class Lesson(models.Model): lesson.title = wldoc.book_info.title lesson.level = Level.objects.get(slug=wldoc.book_info.audience) - lesson.order = 0 lesson.populate_dc() - lesson.type = lesson.dc["type"] - lesson.save() lesson.build_html() lesson.build_package() lesson.build_package(student=True) @@ -139,8 +137,19 @@ class Lesson(models.Model): from librarian.parser import WLDocument wldoc = WLDocument.from_file(self.xml_file.path) self.dc = wldoc.book_info.to_dict() + self.type = self.dc["type"] self.save() + courses = set() + for identifier in wldoc.book_info.curriculum: + try: + curr = Curriculum.objects.get(identifier=identifier) + except Curriculum.DoesNotExist: + pass + else: + courses.add(curr.course) + self.curriculum_courses = courses + def build_html(self): from librarian.parser import WLDocument wldoc = WLDocument.from_file(self.xml_file.path) @@ -173,6 +182,24 @@ class Lesson(models.Model): def get_syntetic(self): return self.section.syntetic_lesson(self.level) + def get_previous(self): + if self.section is None: return None + try: + return self.section.lesson_set.filter( + type=self.type, level=self.level, + order__lt=self.order).order_by('-order')[0] + except IndexError: + return None + + def get_next(self): + if self.section is None: return None + try: + return self.section.lesson_set.filter( + type=self.type, level=self.level, + order__gt=self.order).order_by('order')[0] + except IndexError: + return None + class Attachment(models.Model): slug = models.CharField(max_length=255)