Browse Source

Merge branch 'data_migrations' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into data_migrations

middleware_test
Anet 5 years ago
parent
commit
ac7dfd002b
  1. BIN
      Schema_new.dia
  2. 73
      mamweb/static/css/mamweb.css
  3. 28
      mamweb/templates/base.html
  4. 52
      seminar/templates/seminar/archiv/cisla.html
  5. 1
      seminar/templates/seminar/archiv/cislo.html
  6. 28
      seminar/templates/seminar/archiv/rocnik.html
  7. 4
      seminar/templates/seminar/cojemam/organizatori.html
  8. 195
      seminar/views/views_all.py

BIN
Schema_new.dia

Binary file not shown.

73
mamweb/static/css/mamweb.css

@ -14,8 +14,31 @@ div.container {
margin: auto; margin: auto;
} }
.org-logged-in div.container {
margin-top: 20px;
}
div.login-bar { div.login-bar {
background: #6a0043; 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 */ /* odkazy a nadpisy */
@ -74,16 +97,16 @@ h6 {
.org-logged-in .mam-text-plugin { .org-logged-in .mam-text-plugin {
border: dashed 1px #f77; border: dashed 1px #6a0043;
padding: 5px; padding: 5px;
margin: -5px; margin: -5px;
} }
.mam-org-only { .mam-org-only {
background: #fff0d7; background: #eee4ec;
padding: 10px; padding: 10px;
margin: 10px -10px; margin: 10px -10px;
border: orange 2px dashed; border: #6a0043 2px dashed;
} }
.mam-org-only .mam-org-only { .mam-org-only .mam-org-only {
@ -123,6 +146,8 @@ h1 {
margin-top: 0px; margin-top: 0px;
} }
/* Comments */ /* Comments */
#id_comment { #id_comment {
@ -191,7 +216,7 @@ vikendovka
#header.NOCsoustredeni { background-image: url("../images/header/vylet.jpg");} #header.NOCsoustredeni { background-image: url("../images/header/vylet.jpg");}
#header.NOCzadani { background-image: url("../images/header/stiny.jpg");} #header.NOCzadani { background-image: url("../images/header/stiny.jpg");}
#header.NOCclanky { background-image: url("../images/header/ohen.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 { #header img.logo {
@ -407,6 +432,10 @@ ul.submenu {
/* malý tablet, mobil */ /* malý tablet, mobil */
@media (max-width: 650px) { @media (max-width: 650px) {
#hide-if-small.login-bar-flatpage {
display: none;
}
#title { #title {
display: none; display: none;
} }
@ -558,7 +587,7 @@ div.seznam_orgu {
text-align: center; text-align: center;
} }
div.org_pole { div.org_pole, div.rocnik_pole {
display: inline-block; display: inline-block;
width: 30%; width: 30%;
min-width: 300px; min-width: 300px;
@ -576,16 +605,24 @@ div.org_email {
font-weight: bold; font-weight: bold;
} }
/*otáčecí karty organizátorů*/ /*otáčecí karty (orgové, archiv) */
.flip-card { .flip-card {
width: 200px;
height: 250px;
perspective: 1000px; /* Remove this if you don't want the 3D effect */ perspective: 1000px; /* Remove this if you don't want the 3D effect */
margin-left: auto; margin-left: auto;
margin-right: 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 */ /* This container is needed to position the front and back side */
.flip-card-inner { .flip-card-inner {
position: relative; position: relative;
@ -614,9 +651,10 @@ div.org_email {
background-color: #bbb; background-color: #bbb;
} }
div.foto_org img { div.flip-card-foto img {
width: 100%; width: 100%;
height: 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 */ /* Style the back side */
@ -631,6 +669,23 @@ div.foto_org img {
padding-top: 20px; 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 */ /* graf na úvodní stránce */
a span.popup { a span.popup {

28
mamweb/templates/base.html

@ -36,21 +36,21 @@
</head> </head>
<body class='{% if user.is_staff %}org-logged-in{% endif %}'> <body class='{% if user.is_staff %}org-logged-in{% endif %}'>
<div class="container"> {% if user.is_staff %}
<div class="login-bar" >
{% if user.is_staff %} {% if view.object %}
<div class="login-bar" > Objekt {{ view.object }}: {{ view.object }}
{% if view.object %} {% if view.object.admin_url %}<a class="login-ref-admin" href='{{ view.object.admin_url }}'>[admin]</a>{% endif %}
Objekt {{ view.object }}: {{ view.object }} {% endif %}
{% if view.object.admin_url %}<a href='{{ view.object.admin_url }}'>[admin]</a>{% endif %} {% if flatpage %}
{% endif %} <div class="login-bar-flatpage" id="hide-if-small"> Stránka <tt>{{ flatpage.url }}</tt> ({{ flatpage.title }})</div>
{% if flatpage %} <a class="login-ref-admin" href='{% url 'admin:flatpages_flatpage_change' flatpage.id %}'>[admin]</a>
Stránka <tt>{{ flatpage.url }}</tt> ({{ flatpage.title }}) {% endif %}
<a href='{% url 'admin:flatpages_flatpage_change' flatpage.id %}'>[admin]</a> <a class="login-ref-admin" href='/admin'>[admin mainpage]</a>
{% endif %} </div>
</div> {% endif %}
{% endif %}
<div class="container">
<div class='row'> <div class='row'>
<div class='col-md-12'> <div class='col-md-12'>

52
seminar/templates/seminar/archiv/cisla.html

@ -8,18 +8,56 @@
{% endblock %}{% endblock %} {% endblock %}{% endblock %}
</h2> </h2>
<div class='nahledy_cisel'> <!-- <div class='nahledy_cisel'>
{% autoescape off %}{{ nahledy }}{% endautoescape %} {% 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 %} {% empty %}
Nejsou žádné ročníky Nejsou žádné ročníky
{% endfor %} {% endfor %}
</ul>
</div> </div>
{% endblock content %} {% endblock content %}

1
seminar/templates/seminar/archiv/cislo.html

@ -94,4 +94,3 @@
</div> </div>
{% endblock content %} {% endblock content %}

28
seminar/templates/seminar/archiv/rocnik.html

@ -2,13 +2,20 @@
{% block content %} {% block content %}
<div> <div>
<h1> <h2>
{% block nadpis1a %}{% block nadpis1b %} {% block nadpis1a %}{% block nadpis1b %}
Ročník {{ rocnik.roman }} Ročník {{ rocnik }}
{% endblock %}{% endblock %} {% endblock %}{% endblock %}
</h1> </h2>
<p>Ročník číslo {{ rocnik.rocnik }} ({{ rocnik.prvni_rok }}/{{ rocnik.druhy_rok }}) {% if temata_v_rocniku %}
<h2>Témata</h2>
<ul>
{% for tema in temata_v_rocniku %}
<li>{% if tema.text_zadani %}<a href="{{ tema.verejne_url }}">{% endif %}{{ tema.kod_v_rocniku }}: {{ tema.nazev }}{% if tema.text_zadani %}</a>{% endif %}
{% endfor %}
</ul>
{% endif %}
<ul> <ul>
{% for c in rocnik.verejna_cisla %} {% for c in rocnik.verejna_cisla %}
@ -19,15 +26,6 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% if temata_v_rocniku %}
<h2>Témata</h2>
<ul>
{% for tema in temata_v_rocniku %}
<li>{% if tema.text_zadani %}<a href="{{ tema.verejne_url }}">{% endif %}{{ tema.kod_v_rocniku }}: {{ tema.nazev }}{% if tema.text_zadani %}</a>{% endif %}
{% endfor %}
</ul>
{% endif %}
{% if vysledkovka %} {% if vysledkovka %}
{% if user.is_staff %} {% if user.is_staff %}
<div class='mam-org-only'> <div class='mam-org-only'>
@ -50,7 +48,3 @@
</div> </div>
{% endblock content %} {% endblock content %}

4
seminar/templates/seminar/cojemam/organizatori.html

@ -46,12 +46,12 @@
{# karta organizátora - zepředu fotka, zezadu popis, u neaktivních data kdy organizovali #} {# 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-inner">
<div class="flip-card-front"> <div class="flip-card-front">
<div class="foto_org"> <div class="flip-card-foto">
{% if org.osoba.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> <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 #} {% else %} {# pokud osoba nemá fotku, zobrazuje se defaultní obrázek #}

195
seminar/views/views_all.py

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

Loading…
Cancel
Save