X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/07096ee18c78a330205e0f0a656dee1378ceb8c2..ec3fc6cec2c8a99508c254f312430410f8a43512:/catalogue/models.py?ds=inline diff --git a/catalogue/models.py b/catalogue/models.py index 0c3a54c..46d026c 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 @@ -128,8 +129,6 @@ class Lesson(models.Model): 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 +138,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 +183,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)