add batch publish command
authorJan Szejko <janek37@gmail.com>
Wed, 17 Jan 2018 11:43:38 +0000 (12:43 +0100)
committerJan Szejko <janek37@gmail.com>
Wed, 17 Jan 2018 12:20:30 +0000 (13:20 +0100)
apps/catalogue/management/commands/publish.py [new file with mode: 0644]
apps/catalogue/models/book.py

diff --git a/apps/catalogue/management/commands/publish.py b/apps/catalogue/management/commands/publish.py
new file mode 100644 (file)
index 0000000..2407ae6
--- /dev/null
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+import sys
+from optparse import make_option
+
+from django.contrib.auth.models import User
+from django.core.management.base import BaseCommand
+
+from catalogue.models import Book
+
+
+class Command(BaseCommand):
+    help = 'Exports a lesson in WL1 XML'
+    option_list = BaseCommand.option_list + (
+        # make_option('-q', '--quiet', action='store_false', dest='verbose',
+        #     default=True, help='Less output'),
+        # make_option('-d', '--dry-run', action='store_true', dest='dry_run',
+        #     default=False, help="Don't actually touch anything"),
+        make_option(
+            '-u', '--username', dest='username', metavar='USER',
+            help='Assign commits to this user (required, preferably yourself).'),
+    )
+
+    def handle(self, *args, **options):
+        user = User.objects.get(username=options.get('username'))
+        slugs = [line.strip() for line in sys.stdin if line.strip()]
+        for slug in slugs:
+            lesson = Book.objects.get(slug=slug)
+            print lesson.slug
+            lesson.assert_publishable()
+            lesson.publish(user)
index c8792bb..d8acd7f 100755 (executable)
@@ -418,15 +418,18 @@ class Book(models.Model):
         self.assert_publishable()
         changes = self.get_current_changes()
         data = {"lesson_xml": self.wl1_xml(changes=changes)}
-        if host:
-            gallery_url = u'%s%s%s%s/' % (host, settings.MEDIA_URL, settings.IMAGE_DIR, self.gallery)
-            gallery_dir = os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, self.gallery)
-            if os.path.isdir(gallery_dir):
-                data['gallery_url'] = gallery_url
-                attachments = os.listdir(gallery_dir)
-            else:
-                attachments = []
-            data['attachments'] = json.dumps(attachments)
+
+        if not host:
+            host = 'https://' + Site.objects.get_current().domain
+        gallery_url = u'%s%s%s%s/' % (host, settings.MEDIA_URL, settings.IMAGE_DIR, self.gallery)
+        gallery_dir = os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, self.gallery)
+        if os.path.isdir(gallery_dir):
+            data['gallery_url'] = gallery_url
+            attachments = os.listdir(gallery_dir)
+        else:
+            attachments = []
+        data['attachments'] = json.dumps(attachments)
+
         apiclient.api_call(user, "lessons/", data)
         # record the publish
         br = BookPublishRecord.objects.create(book=self, user=user)