X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/0528c9e30aac17fe6d7726485136c4995c05b1ec..b0fadf2591f3af957c1c8e0307d0bcef9e9f8538:/src/catalogue/management/commands/checkintegrity.py diff --git a/src/catalogue/management/commands/checkintegrity.py b/src/catalogue/management/commands/checkintegrity.py index 6f090bb8c..e7d5ffd78 100644 --- a/src/catalogue/management/commands/checkintegrity.py +++ b/src/catalogue/management/commands/checkintegrity.py @@ -1,23 +1,22 @@ -# -*- coding: utf-8 -*- # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # -from optparse import make_option from django.core.management.base import BaseCommand - -from catalogue.models import Book from librarian import ParseError +from catalogue.models import Book class Command(BaseCommand): - option_list = BaseCommand.option_list + ( - make_option('-q', '--quiet', action='store_false', dest='verbose', default=True, - help='Suppress output'), - make_option('-d', '--dry-run', action='store_true', dest='dry_run', default=False, - help="Just check for problems, don't fix them"), - ) help = 'Checks integrity of catalogue data.' + def add_arguments(self, parser): + parser.add_argument( + '-q', '--quiet', action='store_false', dest='verbose', + default=True, help='Suppress output') + parser.add_argument( + '-d', '--dry-run', action='store_true', dest='dry_run', + default=False, help="Just check for problems, don't fix them") + def handle(self, **options): from django.db import transaction @@ -29,21 +28,21 @@ class Command(BaseCommand): info = book.wldocument().book_info except ParseError: if verbose: - print "ERROR! Bad XML for book:", book.slug - print "To resolve: republish." - print + print("ERROR! Bad XML for book:", book.slug) + print("To resolve: republish.") + print() else: should_be = [p.slug for p in info.parts] is_now = [p.slug for p in book.children.all().order_by('parent_number')] if should_be != is_now: if verbose: - print "ERROR! Wrong children for book:", book.slug - # print "Is: ", is_now - # print "Should be:", should_be + print("ERROR! Wrong children for book:", book.slug) + # print("Is: ", is_now) + # print("Should be:", should_be) from difflib import ndiff - print '\n'.join(ndiff(is_now, should_be)) - print "To resolve: republish parent book." - print + print('\n'.join(ndiff(is_now, should_be))) + print("To resolve: republish parent book.") + print() # Check for ancestry. parents = [] @@ -54,14 +53,14 @@ class Command(BaseCommand): ancestors = list(book.ancestor.all()) if set(ancestors) != set(parents): if options['verbose']: - print "Wrong ancestry for book:", book - print "Is: ", ", ".join(ancestors) - print "Should be:", ", ".join(parents) + print("Wrong ancestry for book:", book) + print("Is: ", ", ".join(ancestors)) + print("Should be:", ", ".join(parents)) if not options['dry_run']: book.repopulate_ancestors() if options['verbose']: - print "Fixed." + print("Fixed.") if options['verbose']: - print + print() # TODO: check metadata tags, reset counters