Merge branch 'data_migrations' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into data_migrations
This commit is contained in:
commit
ac7dfd002b
8 changed files with 257 additions and 116 deletions
BIN
Schema_new.dia
BIN
Schema_new.dia
Binary file not shown.
|
@ -14,8 +14,31 @@ div.container {
|
|||
margin: auto;
|
||||
}
|
||||
|
||||
.org-logged-in div.container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
div.login-bar {
|
||||
background: #6a0043;
|
||||
color: #f9d59e;
|
||||
width: 100%;
|
||||
|
||||
position: fixed;
|
||||
margin-top: -20px;
|
||||
min-height: 20px;
|
||||
z-index: 20;
|
||||
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
div.login-bar div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a.login-ref-admin {
|
||||
display: inline;
|
||||
color: #fffbf6;
|
||||
}
|
||||
|
||||
/* odkazy a nadpisy */
|
||||
|
@ -74,16 +97,16 @@ h6 {
|
|||
|
||||
|
||||
.org-logged-in .mam-text-plugin {
|
||||
border: dashed 1px #f77;
|
||||
border: dashed 1px #6a0043;
|
||||
padding: 5px;
|
||||
margin: -5px;
|
||||
}
|
||||
|
||||
.mam-org-only {
|
||||
background: #fff0d7;
|
||||
background: #eee4ec;
|
||||
padding: 10px;
|
||||
margin: 10px -10px;
|
||||
border: orange 2px dashed;
|
||||
border: #6a0043 2px dashed;
|
||||
}
|
||||
|
||||
.mam-org-only .mam-org-only {
|
||||
|
@ -123,6 +146,8 @@ h1 {
|
|||
margin-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Comments */
|
||||
|
||||
#id_comment {
|
||||
|
@ -191,7 +216,7 @@ vikendovka
|
|||
#header.NOCsoustredeni { background-image: url("../images/header/vylet.jpg");}
|
||||
#header.NOCzadani { background-image: url("../images/header/stiny.jpg");}
|
||||
#header.NOCclanky { background-image: url("../images/header/ohen.jpg");}
|
||||
#header.NOCarchiv { background-image: url("../images/header/vikendovka.jpg");}
|
||||
#header.NOCarchiv { background-image: url("../images/header/stiny.jpg");}
|
||||
|
||||
|
||||
#header img.logo {
|
||||
|
@ -407,6 +432,10 @@ ul.submenu {
|
|||
/* malý tablet, mobil */
|
||||
@media (max-width: 650px) {
|
||||
|
||||
#hide-if-small.login-bar-flatpage {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#title {
|
||||
display: none;
|
||||
}
|
||||
|
@ -558,7 +587,7 @@ div.seznam_orgu {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
div.org_pole {
|
||||
div.org_pole, div.rocnik_pole {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
min-width: 300px;
|
||||
|
@ -576,16 +605,24 @@ div.org_email {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*otáčecí karty organizátorů*/
|
||||
/*otáčecí karty (orgové, archiv) */
|
||||
|
||||
.flip-card {
|
||||
width: 200px;
|
||||
height: 250px;
|
||||
perspective: 1000px; /* Remove this if you don't want the 3D effect */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#organizatori.flip-card {
|
||||
width: 200px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
#archiv.flip-card {
|
||||
width: 210px;
|
||||
height: 298px;
|
||||
}
|
||||
|
||||
/* This container is needed to position the front and back side */
|
||||
.flip-card-inner {
|
||||
position: relative;
|
||||
|
@ -614,9 +651,10 @@ div.org_email {
|
|||
background-color: #bbb;
|
||||
}
|
||||
|
||||
div.foto_org img {
|
||||
div.flip-card-foto img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
filter: drop-shadow(0px 3px 3px rgba(0, 0, 0, 0.4)); /* FIXME: obecně k obrázkům */
|
||||
}
|
||||
|
||||
/* Style the back side */
|
||||
|
@ -631,6 +669,23 @@ div.foto_org img {
|
|||
padding-top: 20px;
|
||||
}
|
||||
|
||||
/* karty archiv */
|
||||
|
||||
div.popis_rocniku {
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
|
||||
div.popis_rocniku a{
|
||||
color: black;
|
||||
}
|
||||
|
||||
div.popis_rocniku a:hover{
|
||||
color: #6f2509;
|
||||
}
|
||||
|
||||
/* graf na úvodní stránce */
|
||||
|
||||
a span.popup {
|
||||
|
|
|
@ -36,22 +36,22 @@
|
|||
</head>
|
||||
<body class='{% if user.is_staff %}org-logged-in{% endif %}'>
|
||||
|
||||
{% if user.is_staff %}
|
||||
<div class="login-bar" >
|
||||
{% if view.object %}
|
||||
Objekt {{ view.object }}: {{ view.object }}
|
||||
{% if view.object.admin_url %}<a class="login-ref-admin" href='{{ view.object.admin_url }}'>[admin]</a>{% endif %}
|
||||
{% endif %}
|
||||
{% if flatpage %}
|
||||
<div class="login-bar-flatpage" id="hide-if-small"> Stránka <tt>{{ flatpage.url }}</tt> ({{ flatpage.title }})</div>
|
||||
<a class="login-ref-admin" href='{% url 'admin:flatpages_flatpage_change' flatpage.id %}'>[admin]</a>
|
||||
{% endif %}
|
||||
<a class="login-ref-admin" href='/admin'>[admin mainpage]</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="container">
|
||||
|
||||
{% if user.is_staff %}
|
||||
<div class="login-bar" >
|
||||
{% if view.object %}
|
||||
Objekt {{ view.object }}: {{ view.object }}
|
||||
{% if view.object.admin_url %}<a href='{{ view.object.admin_url }}'>[admin]</a>{% endif %}
|
||||
{% endif %}
|
||||
{% if flatpage %}
|
||||
Stránka <tt>{{ flatpage.url }}</tt> ({{ flatpage.title }})
|
||||
<a href='{% url 'admin:flatpages_flatpage_change' flatpage.id %}'>[admin]</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div class='row'>
|
||||
<div class='col-md-12'>
|
||||
<a href='/'>
|
||||
|
|
|
@ -8,18 +8,56 @@
|
|||
{% endblock %}{% endblock %}
|
||||
</h2>
|
||||
|
||||
<div class='nahledy_cisel'>
|
||||
<!-- <div class='nahledy_cisel'>
|
||||
{% autoescape off %}{{ nahledy }}{% endautoescape %}
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
{% for rocnik, url_png in object_list.items %}
|
||||
|
||||
<div class="rocnik_pole">
|
||||
|
||||
<h3>
|
||||
<a href='{{ rocnik.verejne_url }}'>Ročník {{ rocnik }}</a>
|
||||
</h3>
|
||||
|
||||
|
||||
{# karta ročníku - zepředu obrázek prvního čísla, zezadu odkaz na jednotlivá čísla a výsledkovku #}
|
||||
|
||||
<div class="flip-card" id="archiv">
|
||||
|
||||
<div class="flip-card-inner">
|
||||
<div class="flip-card-front">
|
||||
|
||||
<div class="flip-card-foto">
|
||||
<img src="{{ url_png }}" height=200px alt="{{ rocnik }}">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flip-card-back">
|
||||
<div class="popis_rocniku">
|
||||
Jednotlivá čísla:
|
||||
<ul>
|
||||
{% for cislo in rocnik.cisla.all reversed %}
|
||||
<li><a href='{{ cislo.verejne_url }}'>{{ cislo.poradi }}. číslo</a> {% if cislo.pdf %}(<a href='{{ cislo.pdf.url }}'>pdf</a>) {% endif %}
|
||||
{% empty %}
|
||||
---
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<a href='{{ rocnik.verejne_url }}'>Výsledková listina</a> <!-- FIXME: url výsledkovky-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# konec karty ročníku #}
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{% for r in object_list %}
|
||||
<li><a href='{{ r.verejne_url }}'>Ročník {{ r }}</a>
|
||||
{% empty %}
|
||||
Nejsou žádné ročníky
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<li><a href="obalkovani">Obálkování</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if cislo.verejna_vysledkovka %}
|
||||
<h2>Výsledkovka</h2>
|
||||
|
@ -86,7 +86,7 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if not cislo.verejna_vysledkovka and user.is_staff %}
|
||||
</div>
|
||||
|
@ -94,4 +94,3 @@
|
|||
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
|
|
|
@ -2,22 +2,11 @@
|
|||
|
||||
{% block content %}
|
||||
<div>
|
||||
<h1>
|
||||
<h2>
|
||||
{% block nadpis1a %}{% block nadpis1b %}
|
||||
Ročník {{ rocnik.roman }}
|
||||
Ročník {{ rocnik }}
|
||||
{% endblock %}{% endblock %}
|
||||
</h1>
|
||||
|
||||
<p>Ročník číslo {{ rocnik.rocnik }} ({{ rocnik.prvni_rok }}/{{ rocnik.druhy_rok }})
|
||||
|
||||
<ul>
|
||||
{% for c in rocnik.verejna_cisla %}
|
||||
<li><a href="{{ c.verejne_url }}">Číslo {{ c.kod }}</a>
|
||||
{% if c.pdf %}
|
||||
(<a href='{{ c.pdf.url }}'>pdf</a>)
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</h2>
|
||||
|
||||
{% if temata_v_rocniku %}
|
||||
<h2>Témata</h2>
|
||||
|
@ -28,6 +17,15 @@
|
|||
</ul>
|
||||
{% endif %}
|
||||
|
||||
<ul>
|
||||
{% for c in rocnik.verejna_cisla %}
|
||||
<li><a href="{{ c.verejne_url }}">Číslo {{ c.kod }}</a>
|
||||
{% if c.pdf %}
|
||||
(<a href='{{ c.pdf.url }}'>pdf</a>)
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if vysledkovka %}
|
||||
{% if user.is_staff %}
|
||||
<div class='mam-org-only'>
|
||||
|
@ -50,7 +48,3 @@
|
|||
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -46,12 +46,12 @@
|
|||
|
||||
{# karta organizátora - zepředu fotka, zezadu popis, u neaktivních data kdy organizovali #}
|
||||
|
||||
<div class="flip-card">
|
||||
<div class="flip-card" id="organizatori">
|
||||
|
||||
<div class="flip-card-inner">
|
||||
<div class="flip-card-front">
|
||||
|
||||
<div class="foto_org">
|
||||
<div class="flip-card-foto">
|
||||
{% if org.osoba.foto %}
|
||||
<a href="{{org.osoba.foto.url}}"><img src="{{org.osoba.foto_male.url}}" height="{{org.osoba.foto_male.height}}" alt="{{org.osoba.jmeno}} {{org.osoba.prijmeni}}"></a>
|
||||
{% else %} {# pokud osoba nemá fotku, zobrazuje se defaultní obrázek #}
|
||||
|
|
|
@ -308,82 +308,137 @@ 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 = []
|
||||
# slovník {(ročník, url obrázku)}
|
||||
urls ={}
|
||||
|
||||
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)
|
||||
# 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):
|
||||
# # 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
|
||||
])
|
||||
# subprocess.call([
|
||||
# "convert",
|
||||
# "-density", "300x300",
|
||||
# "-geometry", "{}x{}".format(vyska, sirka),
|
||||
# "-background", "white",
|
||||
# "-flatten",
|
||||
# "{}[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
|
||||
# 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:
|
||||
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 = "{}.png".format(filename)
|
||||
|
||||
tags = []
|
||||
# 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):
|
||||
|
||||
def spirala(urls, tags, idx):
|
||||
"""Rekurzivně prochází urls a generuje strom elementů do tags"""
|
||||
if idx >= len(urls):
|
||||
return
|
||||
subprocess.call([
|
||||
"convert",
|
||||
"-density", "300x300",
|
||||
"-geometry", "{}x{}".format(vyska, sirka),
|
||||
"-background", "white",
|
||||
"-flatten",
|
||||
"{}[0]".format(c.pdf.path), # titulní strana
|
||||
png_path
|
||||
])
|
||||
|
||||
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["nahledy"] = "\n".join(tags)
|
||||
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)
|
||||
|
||||
return context
|
||||
|
||||
### Výsledky
|
||||
|
|
Loading…
Reference in a new issue