76 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| 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…)
 | |
| 
 | |
| 		korekturovane_pdf = KorekturovanePDF.objects.create(
 | |
| 			nazev='B', komentar='Neuronové sítě', pdf=gen_filename(filename='B.pdf')
 | |
| 		)
 | |
| 		korekturovane_pdf.orgove.set((rnd.choice(organizatori),))
 | |
| 
 | |
| 		korekturovane_pdf = KorekturovanePDF.objects.create(
 | |
| 			nazev='A', komentar='M&M: Jak řešit?', pdf=gen_filename(filename='A.pdf')
 | |
| 		)
 | |
| 		korekturovane_pdf.orgove.set(rnd.sample(organizatori, 2))
 | |
| 
 | |
| 		KorekturovanePDF.objects.create(
 | |
| 			nazev='A', komentar='M&M: Jak řešit?', pdf=gen_filename(filename='A.pdf'),
 | |
| 			status='zanaseni'
 | |
| 		)
 | |
| 
 | |
| 		korekturovane_pdf = KorekturovanePDF.objects.create(
 | |
| 			nazev='A', komentar='M&M: Jak řešit?', pdf=gen_filename(filename='A.pdf'),
 | |
| 			status='zastarale'
 | |
| 		)
 | |
| 		korekturovane_pdf.orgove.set((rnd.choice(organizatori),))
 | |
| 	except OSError 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/
 | |
| 			'''
 | |
| 		)
 |