X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/0c3e8f92c425a22c1b9da737db89977d31312353..ae60b2a3949e96357477cc04f90fd0873cee8a92:/apps/catalogue/management/commands/checkintegrity.py diff --git a/apps/catalogue/management/commands/checkintegrity.py b/apps/catalogue/management/commands/checkintegrity.py deleted file mode 100644 index 0892a7815..000000000 --- a/apps/catalogue/management/commands/checkintegrity.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- 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 - - -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 handle(self, **options): - from django.db import transaction - - verbose = options['verbose'] - - with transaction.commit_on_success(): - for book in Book.objects.all().iterator(): - try: - info = book.wldocument().book_info - except: - if verbose: - 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 "To resolve: republish parent book." - print - - # Check for parent l-tags. - parents = [] - parent = book.parent - while parent: - parents.append(parent) - parent = parent.parent - ltags = [b.book_tag() for b in parents] - if set(ltags) != set(book.tags.filter(category='book')): - if options['verbose']: - print "Wrong book tags for book:", book - print "Is: ", ", ".join(sorted(t.slug for t in book.tags.filter(category='book'))) - print "Should be:", ", ".join(sorted(t.slug for t in ltags)) - if not options['dry_run']: - book.tags = ltags + list(book.tags.exclude(category='book')) - if options['verbose']: - print "Fixed." - if options['verbose']: - print - - # TODO: check metadata tags, reset counters