Commit e1fa2ea5 authored by Dmitry Shelepnev's avatar Dmitry Shelepnev
Browse files

Add info method and verbosity in sopds_util command. Other Fixes

parent f67aacb4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,4 +3,5 @@
*.pid
*.pyc
db.sqlite3
db.sqlite3-journal
.idea/*
+1 −1
Original line number Diff line number Diff line
@@ -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оздаем суперпользователя

+2 −1
Original line number Diff line number Diff line
@@ -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()  
            
+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))        
        
+21 −11
Original line number Diff line number Diff line
@@ -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