|
|
|
|
|
|
|
import datetime
|
|
|
|
import os
|
|
|
|
import random
|
|
|
|
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from django.core.management import call_command
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
from personalni.models import Skola, Resitel
|
|
|
|
from seminar.models.tvorba import Rocnik, Cislo, Problem
|
|
|
|
from seminar.models.odevzdavatko import Reseni
|
|
|
|
from seminar.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()))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|