Browse Source

Merge remote-tracking branch 'origin/master' into Petr

remotes/origin/noc
Bc. Petr Pecha 9 years ago
parent
commit
71933d750b
  1. 82
      mamweb/static/css/mamweb.css
  2. BIN
      mamweb/static/images/footer-bg-bottom.png
  3. BIN
      mamweb/static/images/footer-bg-top.png
  4. BIN
      mamweb/static/images/footer-bg.png
  5. 0
      mamweb/static/images/header-bg-archiv.png
  6. BIN
      mamweb/static/images/header-bg-clanek.png
  7. BIN
      mamweb/static/images/header-bg-uvod.png
  8. BIN
      mamweb/static/images/header-bg-zadani.png
  9. BIN
      mamweb/static/images/logo-mff.png
  10. BIN
      mamweb/static/images/submenu-bg-selected.png
  11. 2
      mamweb/templates/base.html
  12. 2
      seminar/models.py
  13. 28
      seminar/templates/seminar/archiv/problem.html
  14. 38
      seminar/templates/seminar/archiv/problem_clanek.html
  15. 27
      seminar/templates/seminar/archiv/problem_uloha_tema.html
  16. 5
      seminar/templates/seminar/clanky/organizatorske_clanky.html
  17. 24
      seminar/templates/seminar/clanky/resitelske_clanky.html
  18. 4
      seminar/templates/seminar/clanky/submenu.html
  19. 54
      seminar/templates/seminar/soustredeni/seznam_soustredeni.html
  20. 4
      seminar/urls.py
  21. 29
      seminar/views.py

82
mamweb/static/css/mamweb.css

@ -58,10 +58,17 @@ h2 {
#header { #header {
position: relative; position: relative;
font-size: 250%; font-size: 250%;
background: url("../images/header-archiv.png") no-repeat left top; background: url("../images/header-bg-uvod.png") no-repeat center top;
height: 255px; height: 255px;
top: -1px; top: -1px;
} }
#header.cojemam { background-image: url("../images/header-bg-uvod.png"); }
#header.soustredeni { background-image: url("../images/header-bg-soustredeni.png"); }
#header.zadani { background-image: url("../images/header-bg-zadani.png"); }
#header.clanky { background-image: url("../images/header-bg-clanek.png"); }
#header.archiv { background-image: url("../images/header-bg-archiv.png"); }
#header img.logo { #header img.logo {
position: absolute; position: absolute;
top: 20px; top: 20px;
@ -141,7 +148,7 @@ h2 {
font-weight: 400; font-weight: 400;
} }
#submenu li { #submenu li {
padding: 3px 20px; padding: 4px 20px;
display: inline-block; display: inline-block;
height: 40px; height: 40px;
} }
@ -153,9 +160,11 @@ h2 {
color: #3c003c; color: #3c003c;
} }
#submenu li.selected { #submenu li.selected {
background: url("../images/submenu-bg-selected.png") no-repeat center 1px; background: url("../images/submenu-bg-selected.png") no-repeat center;
background-size: 100% 100%; background-size: 150% 150%;
/*background-color: #cc8400;*/ }
#submenu li.selected>a {
color: #3c003c;
} }
/*#submenu li:first-child { /*#submenu li:first-child {
border-top-left-radius: 7px; border-top-left-radius: 7px;
@ -187,9 +196,15 @@ div.zadani_azad_termin {
**********/ **********/
#footer { #footer {
background: url("../images/footer-bg.png") no-repeat -100px 0px; background: url("../images/footer-bg-top.png") no-repeat top center;
padding: 20px 30px; background-color: #ffd546;
height: 210px; padding: 20px 30px 0px 30px;
min-height: 210px;
}
#footer-extra {
background: url("../images/footer-bg-bottom.png") no-repeat bottom center;
height: 39px;
} }
#footer p.license { #footer p.license {
@ -199,16 +214,63 @@ div.zadani_azad_termin {
#footer p.organize { #footer p.organize {
text-align: center; text-align: center;
margin-top: 40px; margin-top: 60px;
margin-left: 90px; margin-left: 90px;
} }
#footer img.logo-left { #footer img.logo-left {
padding: 30px 0px; padding: 50px 0px 0px 0px;
float: left; float: left;
} }
#footer img.logo-right { #footer img.logo-right {
padding: 40px 0px 00px 10px;
float: right; float: right;
} }
@media (max-width: 991px) {
#header {
height: 196px;
background-size: 100% 100%;
}
#header img.logo {
top: 15px;
left: 25px;
height: 170px;
}
#menu li {
min-width: 120px;
font-size: 130%;
}
#submenu ul {
font-size: 115%;
}
#submenu li {
padding-top: 5px;
}
#footer {
padding: 20px 40px 0px 40px;
min-height: 270px;
}
#footer-extra {
position: relative;
top: -10px;
height: 39px;
}
#footer p.organize {
text-align: center;
margin-top: 170px;
margin-left: 0px;
}
#footer img.logo-left {
padding: 50px 20px 0px 0px;
float: right;
}
#footer img.logo-right {
padding: 40px 0px 0px 20px;
float: left;
}
}

BIN
mamweb/static/images/footer-bg-bottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
mamweb/static/images/footer-bg-top.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
mamweb/static/images/footer-bg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

0
mamweb/static/images/header-archiv.png → mamweb/static/images/header-bg-archiv.png

Before

Width:  |  Height:  |  Size: 400 KiB

After

Width:  |  Height:  |  Size: 400 KiB

BIN
mamweb/static/images/header-bg-clanek.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

BIN
mamweb/static/images/header-bg-uvod.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

BIN
mamweb/static/images/header-bg-zadani.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

BIN
mamweb/static/images/logo-mff.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
mamweb/static/images/submenu-bg-selected.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

2
mamweb/templates/base.html

@ -91,7 +91,7 @@
<a href="http://jcmf.cz/"><img class="logo-left" src="{% static 'images/logo-jcmf.png' %}" /></a> <a href="http://jcmf.cz/"><img class="logo-left" src="{% static 'images/logo-jcmf.png' %}" /></a>
<a href="http://mff.cuni.cz"><img class="logo-right" src="{% static 'images/logo-mff.png' %}" /></a> <a href="http://mff.cuni.cz"><img class="logo-right" src="{% static 'images/logo-mff.png' %}" /></a>
<p class="organize"><a href="/kontakt">Korespondenční seminář M&amp;M</a> organizují převážně studenti MFF UK. Organizaci semináře a vydávání časopisu podporuje <a href="http://jcmf.cz">Jednota českých matematiků a fyziků</a>.</p> <p class="organize"><a href="/kontakt">Korespondenční seminář M&amp;M</a> organizují převážně studenti MFF UK. Organizaci semináře a vydávání časopisu podporuje <a href="http://jcmf.cz">Jednota českých matematiků a fyziků</a>.</p>
</div> </div><div id="footer-extra"></div>
</div> </div>
</div> </div>
</div> </div>

2
seminar/models.py

@ -579,7 +579,7 @@ class Soustredeni(SeminarModelBase):
db_table = 'seminar_soustredeni' db_table = 'seminar_soustredeni'
verbose_name = u'Soustředění' verbose_name = u'Soustředění'
verbose_name_plural = u'Soustředění' verbose_name_plural = u'Soustředění'
ordering = ['rocnik__rocnik', 'datum_zacatku'] ordering = ['-rocnik__rocnik', '-datum_zacatku']
# Interní ID # Interní ID
id = models.AutoField(primary_key = True) id = models.AutoField(primary_key = True)

28
seminar/templates/seminar/archiv/problem.html

@ -4,31 +4,10 @@
{% block content %} {% block content %}
<div> <div>
{% if problem.cislo_zadani %} {% block problem %}
<h2> {% endblock %}
{% block nadpis1a %}{% block nadpis1b %}
{{ problem.nazev_typu }} {{ problem.kod_v_rocniku }}: {{ problem.nazev }} {{ problem.body_v_zavorce }}
{% endblock %}{% endblock %}
</h2>
<p>Zadáno v čísle <a href='{{ problem.cislo_zadani.verejne_url }}'>{{ problem.cislo_zadani.kod }}</a>. {% if user.is_staff %}
{% if problem.cislo_reseni %}
<p>Řešeno v čísle <a href='{{ problem.cislo_reseni.verejne_url }}'>{{ problem.cislo_reseni.kod }}</a>.
{% endif %}
{% else %}
<h2>Problém {{ problem.nazev }}</h2>
{% endif %}
<h3>Zadání</h3>
{{ problem.text_zadani |safe }}
{% if problem.text_reseni %}
<h3>Řešení</h3>
{{ problem.text_reseni |safe }}
{% endif %}
{# TODO Kontrola, zda je uzivatel org #}
{% if user.is_authenticated %}
<div class='mam-org-only'> <div class='mam-org-only'>
<h3>Text - org</h3> <h3>Text - org</h3>
@ -43,4 +22,3 @@
</div> </div>
{% endblock content %} {% endblock content %}

38
seminar/templates/seminar/archiv/problem_clanek.html

@ -0,0 +1,38 @@
{% extends "seminar/archiv/problem.html" %}
{% block problem %}
{% if problem.cislo_zadani %}
<h2>
{{ problem.nazev_typu }}:
{% block nadpis1a %}{% block nadpis1b %}
{{ problem.nazev }}
{% endblock %}{% endblock %}
</h2>
<div class='problem-autori'>
{% if problem.typ == 'res-clanek' %}
{# pozor na mezery #}
{% for r in reseni %}{% if not forloop.first %}, {% endif %}
{{ r.resitel.jmeno }} {{ r.resitel.prijmeni }}{% if r.body %} ({{ r.body }} b){% endif %}{% endfor %}
{% else %}
{{ problem.autor.first_name }}
{% if problem.autor.organizator.prezdivka %}
&bdquo;{{ problem.autor.organizator.prezdivka }}&ldquo;
{% endif %}
{{ problem.autor.last_name }}
{% endif %}
</div>
{% if problem.cislo_reseni %}
<p>Vyšlo v čísle <a href='{{ problem.cislo_reseni.verejne_url }}'>{{ problem.cislo_reseni.kod }}</a>.
{% endif %}
{% else %}
{# TODO ? #}
<h2>Problém {{ problem.nazev }}</h2>
{% endif %}
{{ problem.text_zadani |safe }}
{% endblock %}

27
seminar/templates/seminar/archiv/problem_uloha_tema.html

@ -0,0 +1,27 @@
{% extends "seminar/archiv/problem.html" %}
{% block problem %}
<h2>
{% block nadpis1a %}{% block nadpis1b %}
{{ problem.nazev_typu }} {{ problem.kod_v_rocniku }}: {{ problem.nazev }} {{ problem.body_v_zavorce }}
{% endblock %}{% endblock %}
</h2>
{% if problem.cislo_zadani %}
<p>Zadáno v čísle <a href='{{ problem.cislo_zadani.verejne_url }}'>{{ problem.cislo_zadani.kod }}</a>.
{% if problem.cislo_reseni %}
<p>Řešeno v čísle <a href='{{ problem.cislo_reseni.verejne_url }}'>{{ problem.cislo_reseni.kod }}</a>.
{% endif %}
{% else %}
{# TODO ? #}
<h2>Problém {{ problem.nazev }}</h2>
{% endif %}
<h3>Zadání</h3>
{{ problem.text_zadani |safe }}
{% if problem.text_reseni %}
<h3>Řešení</h3>
{{ problem.text_reseni |safe }}
{% endif %}
{% endblock %}

5
seminar/templates/seminar/clanky/organizatorske_clanky.html

@ -0,0 +1,5 @@
{% extends 'seminar/clanky/resitelske_clanky.html' %}
{% block nadpis1a %}{% block nadpis1b %}
Organizátorské články
{% endblock %}{% endblock %}

24
seminar/templates/seminar/clanky/resitelske_clanky.html

@ -0,0 +1,24 @@
{% extends 'base.html' %}
{% block content %}
<h2>
{% block nadpis1a %}{% block nadpis1b %}
Řešitelské články
{% endblock %}{% endblock %}
</h2>
{% for clanek in object_list %}
{% with clanek.cislo_zadani.rocnik.rocnik as rocnik %}
{% ifchanged rocnik %}
{% if not forloop.first %}</ul>{% endif %}
<h3>{{ rocnik }}. ročník</h3>
<ul>
{% endifchanged %}
<li>
<a href="{{ clanek.verejne_url }}">{{ clanek.nazev }}</a>
{% endwith %}
{% endfor %}
</ul>
{% endblock %}

4
seminar/templates/seminar/clanky/submenu.html

@ -3,8 +3,8 @@
<div id='submenu'> <div id='submenu'>
<ul> <ul>
<li class="{% if selected == "uvod" %}selected{% endif %}"><a href="{{cesta}}/uvod/">Úvod</a> <li class="{% if selected == "uvod" %}selected{% endif %}"><a href="{{cesta}}/uvod/">Úvod</a>
{# TODO až budou <li class="{% if selected == "org" %}selected{% endif %}"><a href="{{cesta}}/org/">Organizátorské články</a> #} <li class="{% if selected == "org" %}selected{% endif %}"><a href="{{cesta}}/org/">Organizátorské články</a>
{# TODO až budou <li class="{% if selected == "resitel" %}selected{% endif %}"><a href="{{cesta}}/resitel/">Řešitelské články</a> #} <li class="{% if selected == "resitel" %}selected{% endif %}"><a href="{{cesta}}/resitel/">Řešitelské články</a>
<li class="{% if selected == "jak-psat-vedecky-clanek" %}selected{% endif %}"><a href="{{cesta}}/jak-psat-vedecky-clanek/">Jak napsat článek</a> <li class="{% if selected == "jak-psat-vedecky-clanek" %}selected{% endif %}"><a href="{{cesta}}/jak-psat-vedecky-clanek/">Jak napsat článek</a>
</ul> </ul>
</div> </div>

54
seminar/templates/seminar/soustredeni/seznam_soustredeni.html

@ -9,13 +9,13 @@
{# zmena fotky #}{% block header %}soustredeni{% endblock %} {# zmena fotky #}{% block header %}soustredeni{% endblock %}
{% block content %}{% if user.is_authenticated %}{# PRACUJE SE STRANKA #} {% block nadpis1a %}{% block nadpis1b %}
Soustředění
{% endblock %}{% endblock %}
{% block content %}
{#% if user.is_authenticated %#}{# PRACUJE SE STRANKA #}
<h2>
{% block nadpis1a %}{% block nadpis1b %}
Soustředění
{% endblock %}{% endblock %}
</h2>
{# Projdi vsechna soustredeni #} {# Projdi vsechna soustredeni #}
{% for soustredeni in object_list %} {% for soustredeni in object_list %}
@ -29,30 +29,36 @@
že jste přihlášení. <br> že jste přihlášení. <br>
{% endif %} {% endif %}
{# misto soustredeni TODO upravit#} {# misto soustredeni TODO upravit#}
{% if soustredeni.misto %}
<h2> <h2>
Soustředění v&nbsp;{{soustredeni.misto}} {{soustredeni.get_typ_display}}
od {{soustredeni.datum_zacatku}} do {{soustredeni.datum_konce}} {{soustredeni.misto}}
při {{soustredeni.rocnik.rocnik}}. ročníku M&M
</h2> </h2>
<ul>
<li>
{{soustredeni.datum_zacatku}}&thinsp;&ndash;&thinsp;{{soustredeni.datum_konce}}
</li>
</ul>
{% if user.is_authenticated %}
{# popis soustredeni #}
{% if soustredeni.text %}
{% autoescape off %}{{soustredeni.text}}{% endautoescape %}
{% endif %}
{# Účastníci #}
<h3>Soustředění se zúčastnili tito účastníci:</h3>
<ul>
{% for i in soustredeni.soustredeni_ucastnici_set.all %}
<li>{{i.resitel}}
{% empty %}
<li>Nic!
{% endfor %}
</ul>
{% endif %} {% endif %}
{# popis soustredeni #}
{% if soustredeni.text %}
{% autoescape off %}{{soustredeni.text}}{% endautoescape %}
{% endif %}
{# Účastníci #}
<h3>Soustředění se zúčastnili tito účastníci:</h3>
<ul>
{% for i in soustredeni.soustredeni_ucastnici_set.all %}
<li>{{i.resitel}}
{% empty %}
<li>Nic!
{% endfor %}
</ul>
{% endif %} {% endif %}
{% empty %} {% empty %}
Žádná soustředění zatím neproběhla! Žádná soustředění zatím neproběhla!
{% endfor %} {% endfor %}
{% else %}{% include 'seminar/pracuje_se.html' %}{% endif %}{% endblock %} {#% else %}{% include 'seminar/pracuje_se.html' %}{% endif %#}
{% endblock %}

4
seminar/urls.py

@ -22,6 +22,10 @@ urlpatterns = patterns('',
url(r'^$', views.TitulniStranaView.as_view(), name='titulni_strana'), url(r'^$', views.TitulniStranaView.as_view(), name='titulni_strana'),
url(r'^stare-novinky/$', views.StareNovinkyView.as_view(), name='stare_novinky'), url(r'^stare-novinky/$', views.StareNovinkyView.as_view(), name='stare_novinky'),
url(r'^clanky/resitel/$', views.ClankyResitelView.as_view(), name='clanky_resitel'),
url(r'^clanky/org/$', views.ClankyOrganizatorView.as_view(), name='clanky_organizator'),
url(r'^stav$', views.StavDatabazeView, name='stav_databaze'), url(r'^stav$', views.StavDatabazeView, name='stav_databaze'),
url(r'^aesop-export/mam-rocnik-(?P<prvni_rok>\d+)\.csv$', export.ExportRocnikView.as_view(), name='seminar_export_rocnik'), url(r'^aesop-export/mam-rocnik-(?P<prvni_rok>\d+)\.csv$', export.ExportRocnikView.as_view(), name='seminar_export_rocnik'),

29
seminar/views.py

@ -168,9 +168,23 @@ class RocnikView(generic.DetailView):
context['temata_v_rocniku'] = temata_v_rocniku context['temata_v_rocniku'] = temata_v_rocniku
return context return context
class ProblemView(generic.DetailView): class ProblemView(generic.DetailView):
model = Problem model = Problem
template_name = 'seminar/archiv/problem.html'
def _je_clanek(self, problem):
return problem.typ in [Problem.TYP_ORG_CLANEK, Problem.TYP_RES_CLANEK]
def get_template_names(self, **kwargs):
context = super(ProblemView, self).get_context_data(**kwargs)
return ['seminar/archiv/problem_' + ('clanek.html' if self._je_clanek(context['problem']) else 'uloha_tema.html')]
def get_context_data(self, **kwargs):
context = super(ProblemView, self).get_context_data(**kwargs)
if context['problem'].typ == Problem.TYP_RES_CLANEK:
context['reseni'] = Reseni.objects.filter(problem=context['problem']).select_related('resitel').order_by('resitel__prijmeni')
return context
class RadekVysledkovky(object): class RadekVysledkovky(object):
pass pass
@ -280,6 +294,19 @@ class SoustredeniView(generic.DetailView):
model = Soustredeni model = Soustredeni
template_name = 'seminar/archiv/soustredeni.html' template_name = 'seminar/archiv/soustredeni.html'
### Články
class ClankyResitelView(generic.ListView):
model = Problem
template_name = 'seminar/clanky/resitelske_clanky.html'
queryset = Problem.objects.filter(typ=Problem.TYP_RES_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
class ClankyOrganizatorView(generic.ListView):
model = Problem
template_name = 'seminar/clanky/organizatorske_clanky.html'
queryset = Problem.objects.filter(typ=Problem.TYP_ORG_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
### Status ### Status
def StavDatabazeView(request): def StavDatabazeView(request):

Loading…
Cancel
Save