|
|
@ -308,24 +308,51 @@ class ArchivView(generic.ListView): |
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
context = super(ArchivView, self).get_context_data(**kwargs) |
|
|
|
|
|
|
|
vyska = 297 # px |
|
|
|
sirka = 210 # px |
|
|
|
vyska = 594 # px |
|
|
|
sirka = 420 # px |
|
|
|
|
|
|
|
# nejnovějších 10 zveřejněných čísel |
|
|
|
# cisla = Cislo.objects.filter(verejne_db=True)[:10] |
|
|
|
cisla = Cislo.objects.filter(poradi=1)[:10] |
|
|
|
# první číslo z každého ročníku |
|
|
|
cisla = Cislo.objects.filter(poradi=1) |
|
|
|
|
|
|
|
# op == os.path, udělá z argumentů cestu |
|
|
|
png_dir = op.join(settings.MEDIA_ROOT, "cislo", "png") |
|
|
|
|
|
|
|
# seznam [(url obrázku, číslo)] |
|
|
|
urls = [] |
|
|
|
|
|
|
|
for i, c in enumerate(cisla): |
|
|
|
# slovník {(ročník, url obrázku)} |
|
|
|
urls ={} |
|
|
|
|
|
|
|
# for j, rocnik in enumerate(Rocnik.objects.all()): |
|
|
|
# urls_rocnik = {} |
|
|
|
# for i,c in enumerate(rocnik.cisla.all()): |
|
|
|
# if not c.pdf: |
|
|
|
# urls_rocnik[c.poradi] = op.join(settings.MEDIA_URL, "cislo", "png", "default.png") |
|
|
|
# else: |
|
|
|
# filename = os.path.split(c.pdf.file.name)[1].split(".")[0] |
|
|
|
# png_filename = "{}.png".format(filename) |
|
|
|
|
|
|
|
# # Pokud obrázek neexistuje nebo není aktuální, vytvoř jej |
|
|
|
# png_path = op.join(png_dir, png_filename) |
|
|
|
# if not op.exists(png_path) or \ |
|
|
|
# op.getmtime(png_path) < op.getmtime(c.pdf.path): |
|
|
|
|
|
|
|
# subprocess.call([ |
|
|
|
# "convert", |
|
|
|
# "-density", "300x300", |
|
|
|
# "-geometry", "{}x{}".format(vyska, sirka), |
|
|
|
# "-background", "white", |
|
|
|
# "-flatten", |
|
|
|
# "{}[0]".format(c.pdf.path), # titulní strana |
|
|
|
# png_path |
|
|
|
# ]) |
|
|
|
|
|
|
|
# urls_rocnik[c.poradi] = op.join(settings.MEDIA_URL, "cislo", "png", png_filename) |
|
|
|
# urls[rocnik] = urls_rocnik |
|
|
|
|
|
|
|
for i,c in enumerate(cisla): |
|
|
|
if not c.pdf: |
|
|
|
continue |
|
|
|
urls[c.rocnik] = op.join(settings.MEDIA_URL, "cislo", "png", "default.png") |
|
|
|
else: |
|
|
|
filename = os.path.split(c.pdf.file.name)[1].split(".")[0] |
|
|
|
png_filename = "{}-{}px.png".format(filename, vyska) |
|
|
|
png_filename = "{}.png".format(filename) |
|
|
|
|
|
|
|
# Pokud obrázek neexistuje nebo není aktuální, vytvoř jej |
|
|
|
png_path = op.join(png_dir, png_filename) |
|
|
@ -338,52 +365,80 @@ class ArchivView(generic.ListView): |
|
|
|
"-geometry", "{}x{}".format(vyska, sirka), |
|
|
|
"-background", "white", |
|
|
|
"-flatten", |
|
|
|
"-rotate", str(90 * i), |
|
|
|
"{}[0]".format(c.pdf.path), # titulní strana |
|
|
|
png_path |
|
|
|
]) |
|
|
|
|
|
|
|
urls.append( |
|
|
|
(op.join(settings.MEDIA_URL, "cislo", "png", png_filename), c) |
|
|
|
) |
|
|
|
vyska, sirka = sirka, vyska / 2 |
|
|
|
|
|
|
|
tags = [] |
|
|
|
|
|
|
|
def spirala(urls, tags, idx): |
|
|
|
"""Rekurzivně prochází urls a generuje strom elementů do tags""" |
|
|
|
if idx >= len(urls): |
|
|
|
return |
|
|
|
|
|
|
|
img_url, cislo = urls[idx] |
|
|
|
tags.append( |
|
|
|
"<div style='top:{}%;left:{}%;width:{}%;height:{}%;'>" |
|
|
|
.format( |
|
|
|
50 if idx % 4 == 2 else 0, |
|
|
|
50 if idx % 4 == 1 else 0, |
|
|
|
50 if idx % 2 == 1 else 100, |
|
|
|
50 if idx > 0 and idx % 2 == 0 else 100 |
|
|
|
) |
|
|
|
) |
|
|
|
tags.append("<a href='{}' title='{}'>".format( |
|
|
|
cislo.verejne_url(), cislo.kod() |
|
|
|
)) |
|
|
|
tags.append( |
|
|
|
"<img src='{}' style='top:{}%;left:{}%;width:{}%;height:{}%;'>" |
|
|
|
.format( |
|
|
|
img_url, |
|
|
|
50 if idx % 4 == 3 else 0, |
|
|
|
50 if idx % 4 == 2 else 0, |
|
|
|
50 if idx % 2 == 0 else 100, |
|
|
|
50 if idx % 2 == 1 else 100 |
|
|
|
) |
|
|
|
) |
|
|
|
tags.append("</a>") |
|
|
|
spirala(urls, tags, idx + 1) |
|
|
|
tags.append("</div>") |
|
|
|
spirala(urls, tags, 0) |
|
|
|
urls[c.rocnik] = op.join(settings.MEDIA_URL, "cislo", "png", png_filename) |
|
|
|
|
|
|
|
context["object_list"] = urls |
|
|
|
|
|
|
|
print(context) |
|
|
|
|
|
|
|
# for i, c in enumerate(cisla): |
|
|
|
# if not c.pdf: |
|
|
|
# continue |
|
|
|
# filename = os.path.split(c.pdf.file.name)[1].split(".")[0] |
|
|
|
# png_filename = "{}-{}px.png".format(filename, vyska) |
|
|
|
|
|
|
|
# # Pokud obrázek neexistuje nebo není aktuální, vytvoř jej |
|
|
|
# png_path = op.join(png_dir, png_filename) |
|
|
|
# if not op.exists(png_path) or \ |
|
|
|
# op.getmtime(png_path) < op.getmtime(c.pdf.path): |
|
|
|
|
|
|
|
# subprocess.call([ |
|
|
|
# "convert", |
|
|
|
# "-density", "300x300", |
|
|
|
# "-geometry", "{}x{}".format(vyska, sirka), |
|
|
|
# "-background", "white", |
|
|
|
# "-flatten", |
|
|
|
# "-rotate", str(90 * i), |
|
|
|
# "{}[0]".format(c.pdf.path), # titulní strana |
|
|
|
# png_path |
|
|
|
# ]) |
|
|
|
|
|
|
|
# urls.append( |
|
|
|
# (op.join(settings.MEDIA_URL, "cislo", "png", png_filename), c) |
|
|
|
# ) |
|
|
|
# vyska, sirka = sirka, vyska / 2 |
|
|
|
|
|
|
|
# tags = [] |
|
|
|
|
|
|
|
# def spirala(urls, tags, idx): |
|
|
|
# """Rekurzivně prochází urls a generuje strom elementů do tags""" |
|
|
|
# if idx >= len(urls): |
|
|
|
# return |
|
|
|
|
|
|
|
# img_url, cislo = urls[idx] |
|
|
|
# tags.append( |
|
|
|
# "<div style='top:{}%;left:{}%;width:{}%;height:{}%;'>" |
|
|
|
# .format( |
|
|
|
# 50 if idx % 4 == 2 else 0, |
|
|
|
# 50 if idx % 4 == 1 else 0, |
|
|
|
# 50 if idx % 2 == 1 else 100, |
|
|
|
# 50 if idx > 0 and idx % 2 == 0 else 100 |
|
|
|
# ) |
|
|
|
# ) |
|
|
|
# tags.append("<a href='{}' title='{}'>".format( |
|
|
|
# cislo.verejne_url(), cislo.kod() |
|
|
|
# )) |
|
|
|
# tags.append( |
|
|
|
# "<img src='{}' style='top:{}%;left:{}%;width:{}%;height:{}%;'>" |
|
|
|
# .format( |
|
|
|
# img_url, |
|
|
|
# 50 if idx % 4 == 3 else 0, |
|
|
|
# 50 if idx % 4 == 2 else 0, |
|
|
|
# 50 if idx % 2 == 0 else 100, |
|
|
|
# 50 if idx % 2 == 1 else 100 |
|
|
|
# ) |
|
|
|
# ) |
|
|
|
# tags.append("</a>") |
|
|
|
# spirala(urls, tags, idx + 1) |
|
|
|
# tags.append("</div>") |
|
|
|
# spirala(urls, tags, 0) |
|
|
|
|
|
|
|
# context["nahledy"] = "\n".join(tags) |
|
|
|
|
|
|
|
context["nahledy"] = "\n".join(tags) |
|
|
|
return context |
|
|
|
|
|
|
|
### Výsledky |
|
|
|