From 9572515cea33d0446abe29a4189d4d91c4224555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Sun, 26 Nov 2017 12:16:30 +0100 Subject: [PATCH] =?UTF-8?q?Korektury:=20oprav=20probl=C3=A9m=20s=20konflik?= =?UTF-8?q?tem=20jmen=20png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jméno png záviselo jen na čase nahrání pdf s přesností na minuty a části jména pdf do první tečky. Nyní na čase a celém jméně nahrávaného pdf. Z KorekturovanePDF.save() vyčleněn convert(). --- korektury/models.py | 43 ++++++++++++++++-------- korektury/templates/korektury/opraf.html | 2 +- korektury/views.py | 2 +- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/korektury/models.py b/korektury/models.py index 70d57e08..92c6bf41 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -69,33 +69,48 @@ class KorekturovanePDF(models.Model): #TODO Nepovinný foreign key k číslu - def save(self): - # Pokud se nezmenilo PDF, tak nepregenerovavej nahledy - try: - original = KorekturovanePDF.objects.get(pk=self.pk) - if original.pdf == self.pdf: - super(KorekturovanePDF, self).save() - return - except ObjectDoesNotExist: - pass - super(KorekturovanePDF, self).save() - filename = os.path.split(self.pdf.file.name)[1].split(".")[0] + def get_prefix(self): + """Vrať řetězec, ke kterému se připojí číslo a .png""" + # vrátíme jméno souboru bez cesty + return os.path.basename(self.pdf.file.name) + + def convert(self): + """Vytvoří jedno png za každou stranu pdf a uloží se""" dirname = os.path.join(settings.MEDIA_ROOT, settings.KOREKTURY_IMG_DIR) if not os.path.exists(dirname): os.mkdir(dirname) + self.stran = 0 while True: res = subprocess.call([ "convert", "-density", "180x180", "-geometry", " 1024x1448", "%s[%d]" % (self.pdf.path, self.stran), - os.path.join(dirname, "%s-%d.png" % (filename, self.stran)) + os.path.join( + dirname, + "%s-%d.png" % (self.get_prefix(), self.stran) + ) ]) - if res==1: + if res == 1: break - self.stran +=1 + self.stran += 1 + # Změnil se počet stran, ukládáme + super(KorekturovanePDF, self).save() + + def save(self): + # Pokud se nezmenilo PDF, tak nepregenerovavej nahledy + try: + original = KorekturovanePDF.objects.get(pk=self.pk) + if original.pdf == self.pdf: + super(KorekturovanePDF, self).save() + return + except ObjectDoesNotExist: + pass + # uložíme nahrávané pdf super(KorekturovanePDF, self).save() + # uložíme png a změněný počet stran + self.convert() @reversion.register(ignore_duplicate_revision=True) diff --git a/korektury/templates/korektury/opraf.html b/korektury/templates/korektury/opraf.html index 7c013e42..a91d58b4 100644 --- a/korektury/templates/korektury/opraf.html +++ b/korektury/templates/korektury/opraf.html @@ -47,7 +47,7 @@
+ src='/media/korektury/img/{{img_prefix}}-{{i}}.png'/>

{% endfor %} diff --git a/korektury/views.py b/korektury/views.py index 979830bf..bd89cbc2 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -167,7 +167,7 @@ class KorekturyView(generic.TemplateView): context = super(KorekturyView,self).get_context_data(**kwargs) pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf']) context['pdf'] = pdf - context['img_name'] = os.path.split(pdf.pdf.path)[1].split('.')[0] + context['img_prefix'] = pdf.get_prefix() context['img_path'] = settings.KOREKTURY_IMG_DIR context['img_indexes'] = range(pdf.stran) context['form_oprava'] = OpravaForm()