X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/d0f0e1412cc42d366b234e798dfb68feed05d751..d555d988764995ea1f9f5ece46f453a66f09b334:/src/catalogue/management/commands/republish.py diff --git a/src/catalogue/management/commands/republish.py b/src/catalogue/management/commands/republish.py new file mode 100644 index 0000000..48f9345 --- /dev/null +++ b/src/catalogue/management/commands/republish.py @@ -0,0 +1,46 @@ +# -*- 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 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 + + lessons = Lesson.objects.order_by('slug') + + if options.get('exclude'): + slugs = [line.strip() for line in open(options['exclude'])] + lessons = lessons.exclude(slug__in=slugs) + + for lesson in lessons: + print + print 'Republishing: %s' % lesson.slug + try: + lesson.republish(repackage_level=False) + except librarian.ParseError as e: + print '!!!!!! PARSE ERROR !!!!!!' + print e + + if options.get('repackage'): + print 'Rebuilding levels...' + for level in Level.objects.all(): + print level.name + level.build_packages()