From 8e983105bb2635f3c90e7ddef54be5c36d814df1 Mon Sep 17 00:00:00 2001 From: Jan Szejko Date: Wed, 25 Jan 2017 14:13:46 +0100 Subject: [PATCH 1/1] republish lessons - fix attachments --- catalogue/management/commands/republish.py | 11 +++++++++-- catalogue/models.py | 12 ++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/catalogue/management/commands/republish.py b/catalogue/management/commands/republish.py index 7ead31b..d02eded 100644 --- a/catalogue/management/commands/republish.py +++ b/catalogue/management/commands/republish.py @@ -12,9 +12,16 @@ class Command(BaseCommand): from catalogue.models import Lesson from curriculum.models import Level + from catalogue.management.commands.importlessons import Command + from django.conf import settings + import os.path + + attachments = Command.all_attachments(os.path.join(settings.MEDIA_ROOT, 'catalogue', 'attachments')) + for lesson in Lesson.objects.all(): - print 'Republishing: %s' % lesson.title - lesson.republish(repackage_level=False) + print + print 'Republishing: %s' % lesson.slug + lesson.republish(repackage_level=False, attachments=attachments) print 'Rebuilding levels...' for level in Level.objects.all(): diff --git a/catalogue/models.py b/catalogue/models.py index 2f9a76d..45284cb 100644 --- a/catalogue/models.py +++ b/catalogue/models.py @@ -152,9 +152,17 @@ class Lesson(models.Model): lesson.build_package(student=True) return lesson - def republish(self, repackage_level=True): + def republish(self, repackage_level=True, attachments=None): from librarian import IOFile - infile = IOFile.from_filename(self.xml_file.path) + import os.path + if attachments is None: + attachments = {} + for attachment in self.attachment_set.all(): + f = IOFile.from_filename(attachment.file.name) + name = os.path.basename(attachment.file.name) + attachments[name.decode('utf-8')] = f + attachments.setdefault(name.replace(" ", "").decode('utf-8'), f) + infile = IOFile.from_filename(self.xml_file.path, attachments=attachments) Lesson.publish(infile) if repackage_level: self.level.build_packages() -- 2.20.1