You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.7 KiB

import os
from django.core.management.base import BaseCommand
from django.core.management import call_command
from django.conf import settings
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni
from various.testutils import create_test_data
import django.contrib.auth
User = django.contrib.auth.get_user_model()
class Command(BaseCommand):
help = "Clear database and load testing data."
def add_arguments(self, parser):
parser.add_argument(
'--no-clean',
action='store_true',
help='Změny se provedou v aktuální DB, ne v čisté. Aktuální DB se nezachová. (jen k debugování)',
)
parser.add_argument(
'--no-migrate',
action='store_true',
help='Neprovádět migrace před generováním testovacích dat (jen k debugování)',
)
def handle(self, *args, **options):
assert settings.DEBUG == True
dbfile = settings.DATABASES['default']['NAME']
if os.path.exists(dbfile) and not options['no_clean']:
os.rename(dbfile, dbfile + '.old')
self.stderr.write('Stara databaze prejmenovana na "%s"' % (dbfile + '.old'))
if not options['no_migrate']:
call_command('migrate', no_input=True)
self.stdout.write('Vytvarim uzivatele "admin" (heslo "admin") a pseudo-nahodna data ...')
create_test_data(size=5)
# menší počet ročníků, aby se zrychlilo generování dat a bylo dost úloh
self.stdout.write('Vytvoreno {} uzivatelu, {} skol, {} resitelu, {} rocniku, {} cisel,'
' {} problemu, {} reseni.'.format(User.objects.count(), Skola.objects.count(),
Resitel.objects.count(), Rocnik.objects.count(), Cislo.objects.count(),
Problem.objects.count(), Reseni.objects.count()))