"""
Soubor sloužící ke generování testdat.
"""
import logging
import os
from shutil import copyfile, rmtree

from django.db import transaction
from django.conf import settings

from korektury.models import KorekturovanePDF, generate_filename

logger = logging.getLogger(__name__)

@transaction.atomic
def create_test_pdf(rnd, organizatori):
	""" Vyrobí testovací pdf ke korekturování. Nevyrábí korektury! """
	logger.info('Vyrábím testovací pdf ke korekturovani')
	try:
		testpdfs = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'testpdfs')

		# smaže minulé pdfka a obrázky k nim a vytvoří (znovu) jejich složky
		pdf_dir = os.path.join(settings.BASE_DIR, os.path.join('media', settings.KOREKTURY_PDF_DIR))
		img_dir = os.path.join(settings.BASE_DIR, os.path.join('media', settings.KOREKTURY_IMG_DIR))
		rmtree(pdf_dir, ignore_errors=True)
		os.makedirs(pdf_dir)
		rmtree(img_dir, ignore_errors=True)
		os.makedirs(img_dir)

		def gen_filename(filename):
			name = generate_filename(None, filename)
			print(name)
			copyfile(os.path.join(testpdfs, filename), os.path.join(settings.BASE_DIR, os.path.join('media', name)))
			return name

		# TODO silent ghostscript (vypisuje odstavec za každou stránku…)

		KorekturovanePDF.objects.create(
			nazev='B', komentar='Neuronové sítě', org=rnd.choice(organizatori), pdf=gen_filename(filename='B.pdf')
		)

		KorekturovanePDF.objects.create(
			nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf')
		)

		korekturovane_pdf = KorekturovanePDF.objects.create(
			nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf'),
			status='zanaseni'
		)

		KorekturovanePDF.objects.create(
			nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf'),
			status='zastarale'
		)
	except (FileNotFoundError, Exception) as e:
		# TODO najít správné chyby, které vyhazují různé systémy při neexistenci ImageMagick, nebo knihoven
		logger.error(str(e))
		logger.error(
			'Chyba vytváření testovacích korektur, pravděpodobně není nainstalován ImageMagick nebo některá z knihoven'
			'pro práci se soubory pdf (ghostscript) nebo png (libpng?).\n'
			'''
				Instalaci na linux provedete např. příkazy:
				sudo apt-get build-dep imagemagick
				git clone https://github.com/ImageMagick/ImageMagick.git
				cd ImageMagick/
				./configure
				make
				sudo make install
				sudo ldconfig /usr/local/lib
				cd ..
				rm -r ImageMagick/
			'''
		)