X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/792eb089b2e60783b184c7434890eeaec567e079..798aa75fca4137abc8ab34bca72cb630b7f74222:/catalogue/management/commands/republish.py diff --git a/catalogue/management/commands/republish.py b/catalogue/management/commands/republish.py index 63e072d..48f9345 100644 --- a/catalogue/management/commands/republish.py +++ b/catalogue/management/commands/republish.py @@ -2,31 +2,45 @@ # This file is part of EduMed, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from optparse import make_option + +import librarian from django.core.management.base import BaseCommand class Command(BaseCommand): help = 'Republishes all lessons.' + option_list = BaseCommand.option_list + ( + make_option('--exclude', dest='exclude', metavar="PATH", default=None, + help='PATH to file with excluded lesson slugs.'), + make_option('--ignore-incomplete', action='store_true', dest='ignore_incomplete', default=False, + help='Attachments dir path.'), + make_option('--dont-repackage', action='store_false', dest='repackage', default=True, + help='Don\'t refresh level packages.'), + ) + def handle(self, **options): 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 + lessons = Lesson.objects.order_by('slug') - attachments = Command.all_attachments(os.path.join(settings.MEDIA_ROOT, 'catalogue', 'attachments')) + if options.get('exclude'): + slugs = [line.strip() for line in open(options['exclude'])] + lessons = lessons.exclude(slug__in=slugs) - for lesson in Lesson.objects.all(): + for lesson in lessons: print print 'Republishing: %s' % lesson.slug try: lesson.republish(repackage_level=False) - except BaseException as e: - print '!!!!!! EXCEPTION !!!!!!' + except librarian.ParseError as e: + print '!!!!!! PARSE ERROR !!!!!!' print e - print 'Rebuilding levels...' - for level in Level.objects.all(): - level.build_packages() + if options.get('repackage'): + print 'Rebuilding levels...' + for level in Level.objects.all(): + print level.name + level.build_packages()