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 tvorba.models 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()))