fnp
/
edumed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
weasyprint support - in progress
[edumed.git]
/
catalogue
/
models.py
diff --git
a/catalogue/models.py
b/catalogue/models.py
index
6a3bbb7
..
c5ed66c
100644
(file)
--- a/
catalogue/models.py
+++ b/
catalogue/models.py
@@
-1,4
+1,5
@@
# -*- coding: utf-8
# -*- coding: utf-8
+from django.conf import settings
from django.core.files import File
from django.core.urlresolvers import reverse
from django.db import models
from django.core.files import File
from django.core.urlresolvers import reverse
from django.db import models
@@
-109,6
+110,9
@@
class Lesson(models.Model):
student_pdf = models.FileField(
upload_to="catalogue/lesson/student_pdf",
null=True, blank=True, max_length=255, storage=bofh_storage)
student_pdf = models.FileField(
upload_to="catalogue/lesson/student_pdf",
null=True, blank=True, max_length=255, storage=bofh_storage)
+ weasy_pdf = models.FileField(
+ upload_to="catalogue/lesson/weasy",
+ null=True, blank=True, max_length=255, storage=bofh_storage)
class Meta:
ordering = ['section', 'level', 'order']
class Meta:
ordering = ['section', 'level', 'order']
@@
-121,7
+125,7
@@
class Lesson(models.Model):
return 'catalogue_lesson', [self.slug]
@classmethod
return 'catalogue_lesson', [self.slug]
@classmethod
- def publish(cls, infile, ignore_incomplete=False):
+ def publish(cls, infile, ignore_incomplete=False
, repackage_level=False
):
from librarian.parser import WLDocument
from django.core.files.base import ContentFile
wldoc = WLDocument(infile)
from librarian.parser import WLDocument
from django.core.files.base import ContentFile
wldoc = WLDocument(infile)
@@
-150,6
+154,8
@@
class Lesson(models.Model):
if lesson.type != 'project':
lesson.build_pdf(student=True)
lesson.build_package(student=True)
if lesson.type != 'project':
lesson.build_pdf(student=True)
lesson.build_package(student=True)
+ if repackage_level:
+ lesson.level.build_packages()
return lesson
def republish(self, repackage_level=True, attachments=None):
return lesson
def republish(self, repackage_level=True, attachments=None):
@@
-161,11
+167,9
@@
class Lesson(models.Model):
for attachment in self.attachment_set.all():
full_name = os.path.join(settings.MEDIA_ROOT, attachment.file.name)
f = IOFile.from_filename(full_name)
for attachment in self.attachment_set.all():
full_name = os.path.join(settings.MEDIA_ROOT, attachment.file.name)
f = IOFile.from_filename(full_name)
- attachments[
attachment.slug
] = f
+ attachments[
'%s.%s' % (attachment.slug, attachment.ext)
] = f
infile = IOFile.from_filename(self.xml_file.path, attachments=attachments)
infile = IOFile.from_filename(self.xml_file.path, attachments=attachments)
- Lesson.publish(infile)
- if repackage_level:
- self.level.build_packages()
+ Lesson.publish(infile, repackage_level=repackage_level)
def populate_dc(self):
from librarian.parser import WLDocument
def populate_dc(self):
from librarian.parser import WLDocument
@@
-235,6
+239,12
@@
class Lesson(models.Model):
pdf = PdfFormat(wldoc, teacher=True).build()
self.pdf.save("%s.pdf" % self.slug, File(open(pdf.get_filename())))
pdf = PdfFormat(wldoc, teacher=True).build()
self.pdf.save("%s.pdf" % self.slug, File(open(pdf.get_filename())))
+ def build_weasy_pdf(self):
+ from .publish import WeasyFormat
+ wldoc = self.wldocument()
+ pdf = WeasyFormat(wldoc, media_root=settings.MEDIA_ROOT).build()
+ self.weasy_pdf.save("%s.pdf" % self.slug, File(open(pdf.get_filename())))
+
def add_to_zip(self, zipf, student=False, prefix=''):
pdf = self.student_pdf if student else self.pdf
if pdf:
def add_to_zip(self, zipf, student=False, prefix=''):
pdf = self.student_pdf if student else self.pdf
if pdf:
@@
-289,14
+299,14
@@
class Lesson(models.Model):
return None
def requires_internet(self):
return None
def requires_internet(self):
- return
'internet' in self.dc.get('requires', []
)
+ return
any(requirement in self.dc.get('requires', []) for requirement in ('internet', 'Internet')
)
class Attachment(models.Model):
slug = models.CharField(max_length=255)
ext = models.CharField(max_length=15)
lesson = models.ForeignKey(Lesson)
class Attachment(models.Model):
slug = models.CharField(max_length=255)
ext = models.CharField(max_length=15)
lesson = models.ForeignKey(Lesson)
- file = models.FileField(upload_to="catalogue/attachment", storage=bofh_storage)
+ file = models.FileField(upload_to="catalogue/attachment", storage=bofh_storage
, max_length=255
)
class Meta:
ordering = ['slug', 'ext']
class Meta:
ordering = ['slug', 'ext']