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