option to repackage level on lesson publish
[edumed.git] / catalogue / models.py
index 45284cb..6d1b97a 100644 (file)
@@ -121,7 +121,7 @@ class Lesson(models.Model):
         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)
@@ -150,22 +150,22 @@ class Lesson(models.Model):
         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):
         from librarian import IOFile
         import os.path
+        from django.conf import settings
         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)
+                full_name = os.path.join(settings.MEDIA_ROOT, attachment.file.name)
+                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
@@ -289,7 +289,7 @@ class Lesson(models.Model):
             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):