fnp
/
edumed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't overrwrite files from different lessons
[edumed.git]
/
catalogue
/
models.py
diff --git
a/catalogue/models.py
b/catalogue/models.py
index
75feba1
..
4a21790
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):
@@
-163,9
+169,7
@@
class Lesson(models.Model):
f = IOFile.from_filename(full_name)
attachments['%s.%s' % (attachment.slug, attachment.ext)] = f
infile = IOFile.from_filename(self.xml_file.path, attachments=attachments)
f = IOFile.from_filename(full_name)
attachments['%s.%s' % (attachment.slug, attachment.ext)] = f
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:
@@
-292,11
+302,15
@@
class Lesson(models.Model):
return any(requirement in self.dc.get('requires', []) for requirement in ('internet', 'Internet'))
return any(requirement in self.dc.get('requires', []) for requirement in ('internet', 'Internet'))
+def attachment_path(instance, filename):
+ return 'catalogue/attachment/%s/%s' % (instance.lesson.slug, filename)
+
+
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=
attachment_path, storage=bofh_storage, max_length=255
)
class Meta:
ordering = ['slug', 'ext']
class Meta:
ordering = ['slug', 'ext']