# -*- coding: utf-8 -*-

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 seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni
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()))