republish lessons - fix attachments
authorJan Szejko <janek37@gmail.com>
Wed, 25 Jan 2017 13:13:46 +0000 (14:13 +0100)
committerJan Szejko <janek37@gmail.com>
Wed, 25 Jan 2017 13:13:46 +0000 (14:13 +0100)
catalogue/management/commands/republish.py
catalogue/models.py

index 7ead31b..d02eded 100644 (file)
@@ -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():
index 2f9a76d..45284cb 100644 (file)
@@ -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()