|
|
|
"""
|
|
|
|
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/
|
|
|
|
'''
|
|
|
|
)
|