Korektury: oprav problém s konfliktem jmen png

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().
This commit is contained in:
Matěj Kocián 2017-11-26 12:16:30 +01:00
parent 5bb3a908bf
commit 9572515cea
3 changed files with 33 additions and 18 deletions

View file

@ -69,6 +69,34 @@ class KorekturovanePDF(models.Model):
#TODO Nepovinný foreign key k číslu #TODO Nepovinný foreign key k číslu
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" % (self.get_prefix(), self.stran)
)
])
if res == 1:
break
self.stran += 1
# Změnil se počet stran, ukládáme
super(KorekturovanePDF, self).save()
def save(self): def save(self):
# Pokud se nezmenilo PDF, tak nepregenerovavej nahledy # Pokud se nezmenilo PDF, tak nepregenerovavej nahledy
try: try:
@ -78,24 +106,11 @@ class KorekturovanePDF(models.Model):
return return
except ObjectDoesNotExist: except ObjectDoesNotExist:
pass pass
super(KorekturovanePDF, self).save() # uložíme nahrávané pdf
filename = os.path.split(self.pdf.file.name)[1].split(".")[0]
dirname = os.path.join(settings.MEDIA_ROOT, settings.KOREKTURY_IMG_DIR)
if not os.path.exists(dirname):
os.mkdir(dirname)
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))
])
if res==1:
break
self.stran +=1
super(KorekturovanePDF, self).save() super(KorekturovanePDF, self).save()
# uložíme png a změněný počet stran
self.convert()
@reversion.register(ignore_duplicate_revision=True) @reversion.register(ignore_duplicate_revision=True)

View file

@ -47,7 +47,7 @@
<div class='imgdiv'> <div class='imgdiv'>
<img width='1021' height='1448' <img width='1021' height='1448'
onclick='img_click(this,event)' id='img-{{i}}' onclick='img_click(this,event)' id='img-{{i}}'
src='/media/korektury/img/{{img_name}}-{{i}}.png'/> src='/media/korektury/img/{{img_prefix}}-{{i}}.png'/>
</div> </div>
<hr/> <hr/>
{% endfor %} {% endfor %}

View file

@ -167,7 +167,7 @@ class KorekturyView(generic.TemplateView):
context = super(KorekturyView,self).get_context_data(**kwargs) context = super(KorekturyView,self).get_context_data(**kwargs)
pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf']) pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf'])
context['pdf'] = 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_path'] = settings.KOREKTURY_IMG_DIR
context['img_indexes'] = range(pdf.stran) context['img_indexes'] = range(pdf.stran)
context['form_oprava'] = OpravaForm() context['form_oprava'] = OpravaForm()