From: Jan Szejko Date: Wed, 17 Jan 2018 11:43:38 +0000 (+0100) Subject: add batch publish command X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/24ef4f83129e718634e60e53a5c028e9fe3d7446 add batch publish command --- diff --git a/apps/catalogue/management/commands/publish.py b/apps/catalogue/management/commands/publish.py new file mode 100644 index 00000000..2407ae6e --- /dev/null +++ b/apps/catalogue/management/commands/publish.py @@ -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) diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index c8792bbf..d8acd7fb 100755 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -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)