1 from django.core.files import File
2 from django.db import models
3 from curriculum.models import Level
5 class Section(models.Model):
6 title = models.CharField(max_length=255, unique=True)
7 slug = models.SlugField(unique=True)
8 order = models.IntegerField()
13 def __unicode__(self):
16 class Lesson(models.Model):
17 section = models.ForeignKey(Section)
18 level = models.ForeignKey(Level)
19 title = models.CharField(max_length=255)
20 slug = models.SlugField(unique=True)
21 depth = models.IntegerField()
22 order = models.IntegerField()
24 xml_file = models.FileField(upload_to="catalogue/lesson/xml",
25 null=True, blank=True) # FIXME: slug in paths
26 html_file = models.FileField(upload_to="catalogue/lesson/html",
27 null=True, blank=True)
28 package = models.FileField(upload_to="catalogue/lesson/pack",
29 null=True, blank=True)
30 student_package = models.FileField(upload_to="catalogue/lesson/student_pack",
31 null=True, blank=True)
32 pdf = models.FileField(upload_to="catalogue/lesson/pdf",
33 null=True, blank=True)
34 student_pdf = models.FileField(upload_to="catalogue/lesson/student_pdf",
35 null=True, blank=True)
38 ordering = ['section', 'level', 'depth', 'order']
40 def __unicode__(self):
44 def get_absolute_url(self):
45 return ('catalogue_lesson', [self.slug])
48 def publish(cls, infile):
49 from librarian.parser import WLDocument
50 from django.core.files.base import ContentFile
51 # infile should be IOFile, now it's a regular file
53 wldoc = WLDocument.from_string(xml)
54 slug = wldoc.book_info.url.slug
57 lesson = cls.objects.get(slug=slug)
58 except cls.DoesNotExist:
59 lesson = cls(slug=slug)
62 lesson.xml_file.save('%s.xml' % slug, ContentFile(xml), save=False)
63 lesson.title = wldoc.book_info.title
64 #book.extra_info = wldoc.book_info.to_dict()
67 #lesson.level = Level.objects.get(slug=wldoc.book_info.audience)
68 lesson.level = Level.objects.get(name=wldoc.book_info.audience)
70 lesson.section = Section.objects.all()[0]
78 from librarian.parser import WLDocument
79 wldoc = WLDocument.from_file(self.xml_file.path)
80 html = wldoc.as_html()
81 self.html_file.save("%s.html" % self.slug,
82 File(open(html.get_filename())), save=False)
85 class Attachment(models.Model):
86 lesson = models.ForeignKey(Lesson)
87 file = models.FileField(upload_to="catalogue/attachment")
90 class Part(models.Model):
91 lesson = models.ForeignKey(Lesson)
92 pdf = models.FileField(upload_to="catalogue/part/pdf",
93 null=True, blank=True)
94 student_pdf = models.FileField(upload_to="catalogue/part/student_pdf",
95 null=True, blank=True)