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):
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
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)
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)
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)