Browse Source

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().
remotes/origin/test
Matěj Kocián 7 years ago
parent
commit
9572515cea
  1. 39
      korektury/models.py
  2. 2
      korektury/templates/korektury/opraf.html
  3. 2
      korektury/views.py

39
korektury/models.py

@ -69,33 +69,48 @@ class KorekturovanePDF(models.Model):
#TODO Nepovinný foreign key k číslu #TODO Nepovinný foreign key k číslu
def save(self): def get_prefix(self):
# Pokud se nezmenilo PDF, tak nepregenerovavej nahledy """Vrať řetězec, ke kterému se připojí číslo a .png"""
try: # vrátíme jméno souboru bez cesty
original = KorekturovanePDF.objects.get(pk=self.pk) return os.path.basename(self.pdf.file.name)
if original.pdf == self.pdf:
super(KorekturovanePDF, self).save() def convert(self):
return """Vytvoří jedno png za každou stranu pdf a uloží se"""
except ObjectDoesNotExist:
pass
super(KorekturovanePDF, self).save()
filename = os.path.split(self.pdf.file.name)[1].split(".")[0]
dirname = os.path.join(settings.MEDIA_ROOT, settings.KOREKTURY_IMG_DIR) dirname = os.path.join(settings.MEDIA_ROOT, settings.KOREKTURY_IMG_DIR)
if not os.path.exists(dirname): if not os.path.exists(dirname):
os.mkdir(dirname) os.mkdir(dirname)
self.stran = 0
while True: while True:
res = subprocess.call([ res = subprocess.call([
"convert", "convert",
"-density", "180x180", "-density", "180x180",
"-geometry", " 1024x1448", "-geometry", " 1024x1448",
"%s[%d]" % (self.pdf.path, self.stran), "%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 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() 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)

2
korektury/templates/korektury/opraf.html

@ -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 %}

2
korektury/views.py

@ -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()

Loading…
Cancel
Save