republish lessons
authorJan Szejko <janek37@gmail.com>
Wed, 25 Jan 2017 12:41:47 +0000 (13:41 +0100)
committerJan Szejko <janek37@gmail.com>
Wed, 25 Jan 2017 12:41:47 +0000 (13:41 +0100)
catalogue/management/commands/republish.py [new file with mode: 0644]
catalogue/models.py

diff --git a/catalogue/management/commands/republish.py b/catalogue/management/commands/republish.py
new file mode 100644 (file)
index 0000000..7ead31b
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# This file is part of EduMed, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+from django.core.management.base import BaseCommand
+
+
+class Command(BaseCommand):
+    help = 'Republishes all lessons.'
+
+    def handle(self, **options):
+        from catalogue.models import Lesson
+        from curriculum.models import Level
+
+        for lesson in Lesson.objects.all():
+            print 'Republishing: %s' % lesson.title
+            lesson.republish(repackage_level=False)
+
+        print 'Rebuilding levels...'
+        for level in Level.objects.all():
+            level.build_packages()
index bae04ed..2f9a76d 100644 (file)
@@ -4,6 +4,7 @@ from django.core.urlresolvers import reverse
 from django.db import models
 from jsonfield import JSONField
 from fnpdjango.storage import BofhFileSystemStorage
+
 from curriculum.models import Level, Curriculum, CurriculumCourse
 import logging
 
@@ -151,6 +152,13 @@ class Lesson(models.Model):
             lesson.build_package(student=True)
         return lesson
 
+    def republish(self, repackage_level=True):
+        from librarian import IOFile
+        infile = IOFile.from_filename(self.xml_file.path)
+        Lesson.publish(infile)
+        if repackage_level:
+            self.level.build_packages()
+
     def populate_dc(self):
         from librarian.parser import WLDocument
         wldoc = WLDocument.from_file(self.xml_file.path)