Loading .gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -3,4 +3,5 @@ *.pid *.pyc db.sqlite3 db.sqlite3-journal .idea/* README.md +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ 1.4 Производим инициализацию базы данных и заполнение начальными данными (жанры) python3 manage.py migrate python3 manage.py sopds_util --clear python3 manage.py sopds_util clear 1.5 Cоздаем суперпользователя Loading opds_catalog/management/commands/sopds_scanner.py +2 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ class Command(BaseCommand): def scan(self): scanner=opdsScanner(self.logger) with transaction.atomic(): scanner.scan_all() Counter.objects.update_known_counters() Loading opds_catalog/management/commands/sopds_util.py +25 −4 Original line number Diff line number Diff line from django.core.management.base import BaseCommand from django.core.management import call_command from django.db import transaction from opds_catalog import opdsdb from opds_catalog import models from opds_catalog.models import Counter class Command(BaseCommand): help = 'Utils for SOPDS.' verbose = False def add_arguments(self, parser): parser.add_argument('--clear',action='store_true', dest='clear', default=False, help='Clear opds database.') parser.add_argument('command', help='Use [ clear | info ]') parser.add_argument('--verbose',action='store_true', dest='verbose', default=False, help='Set verbosity level for books collection scan.') def handle(self, *args, **options): if options['clear']: action = options['command'] self.verbose = options['verbose'] if action=='clear': self.stdout.write('Clear book database.') self.clear() elif action == "info": self.info() def clear(self): opdsdb.clear_all() with transaction.atomic(): opdsdb.clear_all(self.verbose) call_command('loaddata', 'genre.json', app_label='opds_catalog') Counter.objects.update_known_counters() def info(self): Counter.objects.update_known_counters() self.stdout.write('Books count = %s'%Counter.objects.get_counter(models.counter_allbooks)) self.stdout.write('Catalogs count = %s'%Counter.objects.get_counter(models.counter_allcatalogs)) self.stdout.write('Authors count = %s'%Counter.objects.get_counter(models.counter_allauthors)) self.stdout.write('Genres count = %s'%Counter.objects.get_counter(models.counter_allgenres)) self.stdout.write('Series count = %s'%Counter.objects.get_counter(models.counter_allseries)) opds_catalog/opdsdb.py +21 −11 Original line number Diff line number Diff line Loading @@ -35,17 +35,27 @@ CMP_TITLE_AUTHORS=1 unknown_genre=_('Unknown genre') def clear_all(): bseries.objects.all().delete() bauthor.objects.all().delete() bseries.objects.all().delete() Book.objects.all().delete() Catalog.objects.all().delete() Author.objects.all().delete() Genre.objects.all().delete() Series.objects.all().delete() bookshelf.objects.all().delete() Counter.objects.all().delete() def clear_all(verbose): count = bseries.objects.all().delete() if verbose: print("From bseries table %s row deleted"%count[0]) count = bauthor.objects.all().delete() if verbose: print("From bauthor table %s row deleted"%count[0]) count = bgenre.objects.all().delete() if verbose: print("From bgenre table %s row deleted"%count[0]) count = Book.objects.all().delete() if verbose: print("From Book table %s row deleted"%count[0]) count = Catalog.objects.all().delete() if verbose: print("From Catalog table %s row deleted"%count[0]) count = Author.objects.all().delete() if verbose: print("From Author table %s row deleted"%count[0]) count = Genre.objects.all().delete() if verbose: print("From Genre table %s row deleted"%count[0]) count = Series.objects.all().delete() if verbose: print("From Series table %s row deleted"%count[0]) count = bookshelf.objects.all().delete() if verbose: print("From bookshelf table %s row deleted"%count[0]) count = Counter.objects.all().delete() if verbose: print("From Counter table %s row deleted"%count[0]) # Книги где avail=0 уже известно что удалены # Книги где avail=2 это только что прверенные существующие книги Loading Loading
.gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -3,4 +3,5 @@ *.pid *.pyc db.sqlite3 db.sqlite3-journal .idea/*
README.md +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ 1.4 Производим инициализацию базы данных и заполнение начальными данными (жанры) python3 manage.py migrate python3 manage.py sopds_util --clear python3 manage.py sopds_util clear 1.5 Cоздаем суперпользователя Loading
opds_catalog/management/commands/sopds_scanner.py +2 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ class Command(BaseCommand): def scan(self): scanner=opdsScanner(self.logger) with transaction.atomic(): scanner.scan_all() Counter.objects.update_known_counters() Loading
opds_catalog/management/commands/sopds_util.py +25 −4 Original line number Diff line number Diff line from django.core.management.base import BaseCommand from django.core.management import call_command from django.db import transaction from opds_catalog import opdsdb from opds_catalog import models from opds_catalog.models import Counter class Command(BaseCommand): help = 'Utils for SOPDS.' verbose = False def add_arguments(self, parser): parser.add_argument('--clear',action='store_true', dest='clear', default=False, help='Clear opds database.') parser.add_argument('command', help='Use [ clear | info ]') parser.add_argument('--verbose',action='store_true', dest='verbose', default=False, help='Set verbosity level for books collection scan.') def handle(self, *args, **options): if options['clear']: action = options['command'] self.verbose = options['verbose'] if action=='clear': self.stdout.write('Clear book database.') self.clear() elif action == "info": self.info() def clear(self): opdsdb.clear_all() with transaction.atomic(): opdsdb.clear_all(self.verbose) call_command('loaddata', 'genre.json', app_label='opds_catalog') Counter.objects.update_known_counters() def info(self): Counter.objects.update_known_counters() self.stdout.write('Books count = %s'%Counter.objects.get_counter(models.counter_allbooks)) self.stdout.write('Catalogs count = %s'%Counter.objects.get_counter(models.counter_allcatalogs)) self.stdout.write('Authors count = %s'%Counter.objects.get_counter(models.counter_allauthors)) self.stdout.write('Genres count = %s'%Counter.objects.get_counter(models.counter_allgenres)) self.stdout.write('Series count = %s'%Counter.objects.get_counter(models.counter_allseries))
opds_catalog/opdsdb.py +21 −11 Original line number Diff line number Diff line Loading @@ -35,17 +35,27 @@ CMP_TITLE_AUTHORS=1 unknown_genre=_('Unknown genre') def clear_all(): bseries.objects.all().delete() bauthor.objects.all().delete() bseries.objects.all().delete() Book.objects.all().delete() Catalog.objects.all().delete() Author.objects.all().delete() Genre.objects.all().delete() Series.objects.all().delete() bookshelf.objects.all().delete() Counter.objects.all().delete() def clear_all(verbose): count = bseries.objects.all().delete() if verbose: print("From bseries table %s row deleted"%count[0]) count = bauthor.objects.all().delete() if verbose: print("From bauthor table %s row deleted"%count[0]) count = bgenre.objects.all().delete() if verbose: print("From bgenre table %s row deleted"%count[0]) count = Book.objects.all().delete() if verbose: print("From Book table %s row deleted"%count[0]) count = Catalog.objects.all().delete() if verbose: print("From Catalog table %s row deleted"%count[0]) count = Author.objects.all().delete() if verbose: print("From Author table %s row deleted"%count[0]) count = Genre.objects.all().delete() if verbose: print("From Genre table %s row deleted"%count[0]) count = Series.objects.all().delete() if verbose: print("From Series table %s row deleted"%count[0]) count = bookshelf.objects.all().delete() if verbose: print("From bookshelf table %s row deleted"%count[0]) count = Counter.objects.all().delete() if verbose: print("From Counter table %s row deleted"%count[0]) # Книги где avail=0 уже известно что удалены # Книги где avail=2 это только что прверенные существующие книги Loading