Merge branch 'test_deadline' into data_migrations
This commit is contained in:
commit
6a1109ba4d
14 changed files with 80895 additions and 827 deletions
|
@ -260,7 +260,7 @@
|
|||
"fields": {
|
||||
"url": "/co-je-MaM/kontakt/",
|
||||
"title": "Kontakt",
|
||||
"content": "<p>Sv\u00e1 \u0159e\u0161en\u00ed \u010di p\u0159\u00edpadn\u00e9 dotazy n\u00e1m m\u016f\u017eete pos\u00edlat bu\u010f klasickou, nebo elektronickou po\u0161tou:</p>\r\n\r\n<table align=\"left\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t<p><strong>Adresa redakce</strong>:</p>\r\n\r\n\t\t\t<p>M&M, OPMK MFF UK<br />\r\n\t\t\tKe Karlovu 3<br />\r\n\t\t\t121 16 Praha 2</p>\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t<p><strong>E-mail</strong>: <a href=\"mailto:mam@matfyz.cz\" style=\"color: rgb(133, 49, 1); line-height: 20.8px;\">mam@matfyz.cz</a></p>\r\n\r\n\t\t\t<p><strong>Facebook:</strong> <a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Koresponden\u010dn\u00ed semin\u00e1\u0159 M&M</a></p>\r\n\r\n\t\t\t<p><strong>Google Kalend\u00e1\u0159:</strong> <a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n\r\n<p> </p>\r\n\r\n<p>B\u011bhem \u0161koln\u00edho roku je velk\u00e1 \u010d\u00e1st <a href=\"/co-je-MaM/organizatori/\"><strong>organiz\u00e1tor\u016f</strong></a> k zasti\u017een\u00ed na koleji 17. listopadu \u010di jinde po Praze.</p>\r\n\r\n<p><strong>Adresa koleje:</strong></p>\r\n\r\n<p>P\u00e1tkova 3<br />\r\n182 00, Praha 8</p>",
|
||||
"content": "<p>Sv\u00e1 \u0159e\u0161en\u00ed \u010di p\u0159\u00edpadn\u00e9 dotazy n\u00e1m m\u016f\u017eete pos\u00edlat bu\u010f klasickou, nebo elektronickou po\u0161tou:</p>\r\n\r\n<p><strong>Adresa redakce</strong>:</p>\r\n\r\n<p>M&M, OPMK MFF UK<br />\r\nKe Karlovu 3<br />\r\n121 16 Praha 2</p>\r\n\r\n<p><strong>E-mail</strong>:<a href=\"mailto:mam@matfyz.cz\" style=\"color: rgb(133, 49, 1); line-height: 20.8px;\"> mam@matfyz.cz</a></p>\r\n\r\n<p> </p>\r\n\r\n<p><strong>Facebook:</strong> <a href=\"https://www.facebook.com/casopis.MaM?fref=ts\">Koresponden\u010dn\u00ed semin\u00e1\u0159 M&M</a></p>\r\n\r\n<p><strong>Google Kalend\u00e1\u0159:</strong> <a href=\"https://calendar.google.com/calendar/embed?src=casopis.mam%40gmail.com&ctz=Europe%2FPrague\">casopis.mam@gmail.com</a></p>\r\n\r\n<p> </p>\r\n\r\n<p>B\u011bhem \u0161koln\u00edho roku je velk\u00e1 \u010d\u00e1st <a href=\"/co-je-MaM/organizatori/\"><strong>organiz\u00e1tor\u016f</strong></a> k zasti\u017een\u00ed na koleji 17. listopadu \u010di jinde po Praze.</p>\r\n\r\n<p><strong>Adresa koleje:</strong></p>\r\n\r\n<p>P\u00e1tkova 3<br />\r\n182 00, Praha 8</p>",
|
||||
"enable_comments": false,
|
||||
"template_name": "",
|
||||
"registration_required": false,
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -101,6 +101,26 @@ h6 {
|
|||
color: black;
|
||||
}
|
||||
|
||||
.button {
|
||||
margin: 10px 0px 10px 0px;
|
||||
padding: 4px 0; /*vertikální centování textu*/
|
||||
text-align: center;
|
||||
background-color: #e84e10;
|
||||
color: #fffbf6;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
font-variant: small-caps;
|
||||
filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4));
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
left:2px;
|
||||
background-color: #df490e;
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
.org-logged-in .mam-text-plugin {
|
||||
border: dashed 1px #6a0043;
|
||||
|
@ -286,7 +306,11 @@ ul.submenu li>a:hover {
|
|||
color: black;
|
||||
}
|
||||
|
||||
ul.menu li.active>a, ul.submenu li.active>a {
|
||||
ul.menu li.active>a {
|
||||
color: #f9d59e;
|
||||
}
|
||||
|
||||
ul.submenu li.active>a {
|
||||
color: black;
|
||||
}
|
||||
|
||||
|
@ -367,13 +391,82 @@ input[type="file"] {
|
|||
}
|
||||
|
||||
.field-with-comment:hover span.field-comment{
|
||||
display:block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* titulni stranka */
|
||||
|
||||
.titulnistrana {
|
||||
display: flex;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.titulnistrana h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.zjistit_vic{
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.zjistit_vic hr {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.graf-svg {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#svg-graf {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 30px;
|
||||
}
|
||||
|
||||
.titulnistrana_obsah {
|
||||
width: 66%;
|
||||
}
|
||||
|
||||
.vitej_titulka, .temata_titulka {
|
||||
width: 49%;
|
||||
padding: 10px;
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.titulnistrana_novinky {
|
||||
width: 33%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.novinka_obrazek {
|
||||
margin: 10px 0px 10px 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.novinka_datum {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.novinka_autor {
|
||||
text-align: right;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.org-text {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.odpocet {
|
||||
margin: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* Zmenšování displeje
|
||||
***********************/
|
||||
|
@ -403,42 +496,22 @@ input {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
div.novinky{
|
||||
max-width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
float: none;
|
||||
}
|
||||
|
||||
div.graf{
|
||||
width: 70%;
|
||||
float: none;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 10px;
|
||||
}
|
||||
#svg-graf{
|
||||
width: 100%;
|
||||
height: auto;;
|
||||
ul.menu {
|
||||
font-size: 90%;
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
ul.menu {
|
||||
font-size: 90%;
|
||||
margin-top: -7px;
|
||||
}
|
||||
ul.menu li {
|
||||
margin-top: 10px; /* posunutí textu hlavního menu níže */
|
||||
}
|
||||
|
||||
ul.menu li {
|
||||
margin-top: 10px; /* posunutí textu hlavního menu níže */
|
||||
}
|
||||
|
||||
ul.submenu li {
|
||||
margin-top: 0px; /* aby se spolu s textem hlavního menu neposunoval níže i text submenu */
|
||||
}
|
||||
|
||||
ul.submenu {
|
||||
margin-top: 8px; /* mezera mezi hlavním menu a submenu */
|
||||
}
|
||||
ul.submenu li {
|
||||
margin-top: 0px; /* aby se spolu s textem hlavního menu neposunoval níže i text submenu */
|
||||
}
|
||||
|
||||
ul.submenu {
|
||||
margin-top: 8px; /* mezera mezi hlavním menu a submenu */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -470,11 +543,53 @@ ul.submenu {
|
|||
display: inline-grid;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
/* titulni stranka */
|
||||
|
||||
.titulnistrana {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.graf {
|
||||
padding-top: 40px;
|
||||
}
|
||||
|
||||
.titulnistrana_obsah {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.vitej_titulka, .temata_titulka {
|
||||
width: 49%;
|
||||
padding: 10px;
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.titulnistrana_novinky {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
padding: 10px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#svg-graf {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
padding: 10px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.zjistit_vic hr {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
/* malý tablet, mobil */
|
||||
@media (max-width: 650px) {
|
||||
|
||||
.no-mobile{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#hide-if-small.login-bar-flatpage {
|
||||
display: none;
|
||||
}
|
||||
|
@ -611,19 +726,35 @@ ul.submenu {
|
|||
text-align: justify;
|
||||
}
|
||||
|
||||
div.novinky {
|
||||
max-width: 100%;
|
||||
float: none;
|
||||
}
|
||||
|
||||
div.graf {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.form td, table.form tr {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
/* titulni stranka */
|
||||
|
||||
.titulnistrana {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.graf {
|
||||
padding-top: 40px;
|
||||
}
|
||||
|
||||
.titulnistrana_obsah {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.vitej_titulka, .temata_titulka {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.titulnistrana_novinky {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*stránka organizátorů*/
|
||||
|
@ -704,11 +835,6 @@ div.org_email {
|
|||
backface-visibility: hidden;
|
||||
}
|
||||
|
||||
/* Style the front side (fallback if image is missing) */
|
||||
.flip-card-front {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
div.flip-card-foto img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
@ -724,6 +850,10 @@ div.flip-card-foto img {
|
|||
padding-top: 20px;
|
||||
}
|
||||
|
||||
#archiv.flip-card-back {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
/* karty archiv */
|
||||
|
||||
div.popis_rocniku {
|
||||
|
@ -920,46 +1050,8 @@ div.cislo_odkazy ul {
|
|||
}
|
||||
|
||||
|
||||
/* titulni stranka */
|
||||
/**/
|
||||
|
||||
.zjistit_vic{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.graf{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.novinky{
|
||||
float: right;
|
||||
max-width: 42%;
|
||||
}
|
||||
|
||||
.novinka_obrazek img {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
div.novinka_obrazek {
|
||||
width: 100%;
|
||||
max-width: 400px; /*FIXME*/
|
||||
}
|
||||
|
||||
div.org-text {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.nahledy_cisel {
|
||||
float: right;
|
||||
height: 297px;
|
||||
width: 420px;
|
||||
position: relative;
|
||||
margin-right: 10%;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
div.nahledy_cisel div, div.nahledy_cisel img {
|
||||
position: absolute;
|
||||
}
|
||||
ul.form {
|
||||
list-style-type: none;
|
||||
padding-left: 0px;
|
||||
|
@ -984,3 +1076,20 @@ p.gdpr {
|
|||
div.gdpr {
|
||||
font-size: 6pt;
|
||||
}
|
||||
|
||||
/* Jak řešit */
|
||||
|
||||
.jakresit img {
|
||||
width: 33%;
|
||||
padding: 10px;
|
||||
filter: none;
|
||||
}
|
||||
|
||||
@media(max-width: 860px) {
|
||||
.jakresit img {
|
||||
margin: auto;
|
||||
display: grid;
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
}
|
||||
}
|
||||
|
|
26847
mamweb/static/images/jakresit_1.svg
Normal file
26847
mamweb/static/images/jakresit_1.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 1.8 MiB |
26847
mamweb/static/images/jakresit_2.svg
Normal file
26847
mamweb/static/images/jakresit_2.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 1.8 MiB |
26847
mamweb/static/images/jakresit_3.svg
Normal file
26847
mamweb/static/images/jakresit_3.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 1.8 MiB |
|
@ -56,14 +56,17 @@
|
|||
<div class='col-md-12'>
|
||||
<a href='/'>
|
||||
<div id="title" >M&M - korespondenční seminář a časopis MFF UK</div>
|
||||
<div id="header" style="background-image: url('{{ fotka }}')">
|
||||
<div id="header">
|
||||
<div class="no-mobile" style="background-image: url('{{ fotka }}')">
|
||||
{# TODO style=… není fancy řešení, ale u <img> se bojím, že mi to rozbije vzhled #}
|
||||
{% sitetree_menu from "main_menu" include "trunk" template "logo.html" %}
|
||||
</div>
|
||||
<img class="logo-mobile" src="{% static 'images/logo-mobile.svg' %}" />
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row'>
|
||||
<div class='col-md-12'>
|
||||
|
||||
|
@ -73,6 +76,9 @@
|
|||
|
||||
{# ========= MENU MOBILE ========== #}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Navbar-->
|
||||
<nav class="nav-button">
|
||||
|
||||
|
@ -95,13 +101,15 @@
|
|||
|
||||
{# ========= END MENU ========== #}
|
||||
|
||||
|
||||
<div class='row'>
|
||||
<div class='row content'>
|
||||
<div class='col-md-12'>
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row'>
|
||||
<div class='col-md-12'>
|
||||
<div id="footer">
|
||||
|
@ -110,6 +118,7 @@
|
|||
<p class="license-mobile">Korespondenční seminář M&M organizují převážně studenti <a href="https://www.mff.cuni.cz/">MFF UK</a>. Organizaci semináře a vydávání časopisu podporuje <a href="https://jcmf.cz/">Jednota českých matematiků a fyziků</a>. S obsahem webu M&M je možné nakládat dle licence <a href="https://creativecommons.org/licenses/by/3.0/cz/">Creative Commons Attribution 3.0</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="{% static 'js/bootstrap.js' %}"></script>
|
||||
|
|
|
@ -706,6 +706,7 @@ class Problem(SeminarModelBase,PolymorphicModel):
|
|||
(STAV_SMAZANY, 'Smazaný'),
|
||||
]
|
||||
stav = models.CharField('stav problému', max_length=32, choices=STAV_CHOICES, blank=False, default=STAV_NAVRH)
|
||||
# Téma je taky Problém, takže má stavy, "zadané" témátko je aktuálně otevřené a dá se k němu něco poslat (řešení nebo článek)
|
||||
|
||||
zamereni = TaggableManager(verbose_name='zaměření',
|
||||
help_text='Zaměření M/F/I/O problému, příp. další tagy', blank=True)
|
||||
|
|
|
@ -8,10 +8,6 @@
|
|||
{% endblock %}{% endblock %}
|
||||
</h2>
|
||||
|
||||
<!-- <div class='nahledy_cisel'>
|
||||
{% autoescape off %}{{ nahledy }}{% endautoescape %}
|
||||
</div>-->
|
||||
|
||||
{% for rocnik, url_png in object_list.items %}
|
||||
|
||||
<div class="rocnik_pole">
|
||||
|
@ -33,7 +29,7 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flip-card-back">
|
||||
<div class="flip-card-back" id="archiv">
|
||||
<div class="popis_rocniku">
|
||||
Jednotlivá čísla:
|
||||
<ul>
|
||||
|
|
16
seminar/templates/seminar/jak-resit.html
Normal file
16
seminar/templates/seminar/jak-resit.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% load humanize %}
|
||||
{% load staticfiles %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class=jakresit>
|
||||
|
||||
<img class="jakresit_obrazek" alt="" src="{% static 'images/jakresit_1.svg' %}" />
|
||||
<img class="jakresit_obrazek" alt="" src="{% static 'images/jakresit_2.svg' %}" />
|
||||
<img class="jakresit_obrazek" alt="" src="{% static 'images/jakresit_3.svg' %}" />
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -9,7 +9,7 @@
|
|||
{% endif %}
|
||||
{% if novinka.zverejneno or user.je_org %}
|
||||
{# datum #}
|
||||
<div><b>{{novinka.datum}}</b></div>
|
||||
<div class=novinka_datum>{{novinka.datum}}</div>
|
||||
{# text #}
|
||||
{{ novinka.text | safe }}
|
||||
{# obrazek #}
|
||||
|
@ -25,12 +25,12 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{# autor #}
|
||||
<div class=novinky_name><p>{{novinka.autor.first_name}}
|
||||
{% if novinka.autor.organizator.prezdivka%}
|
||||
„{{novinka.autor.organizator.prezdivka}}“
|
||||
<div class=novinka_autor>
|
||||
{{novinka.autor.osoba.jmeno}}
|
||||
{% if novinka.autor.osoba.prezdivka%}
|
||||
„{{novinka.autor.osoba.prezdivka}}“
|
||||
{% endif %}
|
||||
{{novinka.autor.last_name}}
|
||||
</p>
|
||||
{{novinka.autor.osoba.prijmeni}}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if not novinka.zverejneno and user.je_org %}
|
||||
|
|
|
@ -5,32 +5,53 @@
|
|||
|
||||
|
||||
{% block content %}
|
||||
{# Uvitaci text #}
|
||||
<h1>
|
||||
{% block nadpis1a %}{% block nadpis1b %}
|
||||
Vítej!
|
||||
{% endblock %}{% endblock %}
|
||||
</h1>
|
||||
<p>
|
||||
M&M je korespondenční seminář. Několikrát do roka zdarma vydáváme časopis a v něm zajímavé podněty k přemýšlení. Ty na ně můžeš reagovat.<br>
|
||||
|
||||
M&M je taky soutěž. Můžeš vyhrát knížky, deskovky nebo dokonce dort. Můžeš se dostat na matfyz bez přijímaček. A především s námi můžeš jet na skvělé soustředění.
|
||||
</p>
|
||||
|
||||
<div class="novinky">
|
||||
{% if dead %}
|
||||
<div class="odpocet">
|
||||
<p><b>Do konce <a href="/zadani/aktualni/">odeslání řešení</a> {% if deadline_soustredeni %}(pro účast na soustředění) {% endif %}zbývá:<br>
|
||||
<big>{{ted|timesince:dead}}</big></b></p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{# Novinky #}
|
||||
<h1>Novinky</h1>
|
||||
{% include 'seminar/novinky.html' %}
|
||||
|
||||
<a href='/stare-novinky/'>Archiv novinek</a>
|
||||
{% if nejblizsi_deadline %}
|
||||
<div class="odpocet">
|
||||
<p><b><big>Do konce <a href="/zadani/aktualni/">odeslání řešení</a> {% if typ_deadline == 'soustredeni' %}(pro účast na soustředění) {% elif typ_deadline == 'preddeadline' %}(pro otištění došlých řešení) {% endif %}zbývá:
|
||||
{{nejblizsi_deadline|timeuntil}}</big></b></p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class=titulnistrana>
|
||||
|
||||
<div class="titulnistrana_obsah">
|
||||
|
||||
<div class="vitej_titulka">
|
||||
|
||||
<h1>
|
||||
{% block nadpis1a %}
|
||||
Vítej
|
||||
{% endblock %}
|
||||
mezi námi
|
||||
</h1>
|
||||
|
||||
<div>
|
||||
M&M je korespondenční seminář. Vydáváme časopis a v něm zajímavé podněty k přemýšlení. Ty na ně můžeš reagovat,
|
||||
experimentovat a objevovat s námi fascinující zákoutí matiky, fyziky a informatiky.
|
||||
<a href="auth/registrace"> <div class="button"> Zaregistruj se! </div> </a> {# FIXME odkaz #}
|
||||
M&M je taky soutěž. Za svá řešení dostaneš body a můžeš vyhrát zajímavé ceny, dostat se
|
||||
na Matfyz bez přijímaček a především, můžeš s námi jet na skvělé soustředění.
|
||||
<a href="cojemam/odmeny"> <div class="button"> Co můžeš vyhrát? </div> </a> {# FIXME odkaz #}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="temata_titulka">
|
||||
|
||||
<h1>
|
||||
Řeš témata!
|
||||
</h1>
|
||||
|
||||
<div>
|
||||
Přidej se k nám! Pusť se do řešení témát.
|
||||
{% for tema in aktualni_temata %}
|
||||
<a href="{{ tema.url }}"> <div class="button"> {{ tema.nazev }} </div> </a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="graf">
|
||||
|
||||
<div class="graf-svg">
|
||||
|
@ -38,8 +59,24 @@ M&M je korespondenční seminář. Několikrát do roka zdarma vydáváme č
|
|||
</div>
|
||||
|
||||
<span class="zjistit_vic">
|
||||
<h2><a href="/co-je-MaM/uvod/">Zjistit víc!</a></h2>
|
||||
<h2><a href="/co-je-MaM/uvod/">Zjisti víc!</a></h2>
|
||||
<hr>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="titulnistrana_novinky">
|
||||
|
||||
{# Novinky #}
|
||||
<h1>Co je nového?</h1>
|
||||
{% include 'seminar/novinky.html' %}
|
||||
|
||||
<a href='/stare-novinky/'>Archiv novinek</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -17,7 +17,7 @@ urlpatterns = [
|
|||
path('archiv/temata/', views.ArchivTemataView.as_view()),
|
||||
|
||||
path('rocnik/<int:rocnik>/', views.RocnikView.as_view(), name='seminar_rocnik'),
|
||||
path('cislo/<int:rocnik>.<str:cislo>/', views.CisloView.as_view(), name='seminar_cislo'), # odkomentované jenom kvůli testování archivu
|
||||
path('cislo/<int:rocnik>.<str:cislo>/', views.CisloView.as_view(), name='seminar_cislo'),
|
||||
path('problem/<int:pk>/', views.ProblemView.as_view(), name='seminar_problem'),
|
||||
path('treenode/<int:pk>/', views.TreeNodeView.as_view(), name='seminar_treenode'),
|
||||
#path('problem/(?P<pk>\d+)/(?P<prispevek>\d+)/', views.PrispevekView.as_view(), name='seminar_problem_prispevek'),
|
||||
|
@ -150,6 +150,7 @@ urlpatterns = [
|
|||
path('temp/nahraj_reseni', resitel_required(views.NahrajReseniView.as_view()), name='seminar_nahraj_reseni'),
|
||||
|
||||
path('', views.TitulniStranaView.as_view(), name='titulni_strana'),
|
||||
path('jak-resit/', views.JakResitView.as_view(), name='jak-resit'),
|
||||
|
||||
# Ceka na autocomplete v3
|
||||
# path('autocomplete/organizatori/',
|
||||
|
|
|
@ -24,7 +24,7 @@ from seminar import utils, treelib
|
|||
from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm
|
||||
import seminar.forms as f
|
||||
|
||||
from datetime import timedelta, date, datetime
|
||||
from datetime import timedelta, date, datetime, MAXYEAR
|
||||
from django.utils import timezone
|
||||
from itertools import groupby
|
||||
from collections import OrderedDict
|
||||
|
@ -44,14 +44,15 @@ import time
|
|||
|
||||
from seminar.utils import aktivniResitele, resi_v_rocniku
|
||||
|
||||
|
||||
def verejna_temata(rocnik):
|
||||
"""Vrací queryset zveřejněných témat v daném ročníku.
|
||||
"""
|
||||
return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod')
|
||||
|
||||
def temata_v_rocniku(rocnik):
|
||||
return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
||||
# ze starého modelu
|
||||
#def verejna_temata(rocnik):
|
||||
# """
|
||||
# Vrací queryset zveřejněných témat v daném ročníku.
|
||||
# """
|
||||
# return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod')
|
||||
#
|
||||
#def temata_v_rocniku(rocnik):
|
||||
# return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik)
|
||||
|
||||
def get_problemy_k_tematu(tema):
|
||||
return Problem.objects.filter(nadproblem = tema)
|
||||
|
@ -242,45 +243,51 @@ def spravne_novinky(request):
|
|||
qs = qs.filter(zverejneno=True)
|
||||
return qs.order_by('-datum')
|
||||
|
||||
def aktualni_temata(rocnik):
|
||||
"""
|
||||
Vrací PolymorphicQuerySet témat v daném ročníku, ke kterým se aktuálně dá něco odevzdat.
|
||||
"""
|
||||
return Tema.objects.filter(rocnik=rocnik, stav='zadany').order_by('kod')
|
||||
|
||||
|
||||
class TitulniStranaView(generic.ListView):
|
||||
template_name='seminar/titulnistrana.html'
|
||||
|
||||
def get_queryset(self):
|
||||
return spravne_novinky(self.request)[:5]
|
||||
return spravne_novinky(self.request)[:3]
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(TitulniStranaView, self).get_context_data(**kwargs)
|
||||
nastaveni = get_object_or_404(Nastaveni)
|
||||
|
||||
deadline_soustredeni = (nastaveni.aktualni_cislo.datum_deadline_soustredeni, "soustredeni")
|
||||
preddeadline = (nastaveni.aktualni_cislo.datum_preddeadline, "preddeadline")
|
||||
deadline = (nastaveni.aktualni_cislo.datum_deadline, "deadline")
|
||||
|
||||
# zjisteni spravneho terminu
|
||||
if nastaveni.aktualni_cislo.datum_deadline_soustredeni:
|
||||
cas_deadline_soustredeni = nastaveni.aktualni_cislo.\
|
||||
datum_deadline_soustredeni
|
||||
if (datetime.now().date() <= cas_deadline_soustredeni):
|
||||
cas_deadline = cas_deadline_soustredeni
|
||||
deadline_soustredeni = True
|
||||
else:
|
||||
cas_deadline = nastaveni.aktualni_cislo.datum_deadline
|
||||
deadline_soustredeni = False
|
||||
else:
|
||||
cas_deadline = nastaveni.aktualni_cislo.datum_deadline
|
||||
deadline_soustredeni = False
|
||||
try:
|
||||
nejblizsi_deadline = sorted(filter(lambda dl: dl[0] is not None and dl[0] >= date.today(), [deadline_soustredeni, preddeadline, deadline]))[0]
|
||||
except IndexError:
|
||||
nejblizsi_deadline = (None, None) # neni zadna aktualni deadline
|
||||
|
||||
# Pokud neni zverejnene cislo nezverejnuj odpocet
|
||||
if nastaveni.aktualni_cislo.verejne():
|
||||
# pokus se zjistit termin odeslani a pokud neni zadany,
|
||||
# nezverejnuj odpocet
|
||||
context['deadline_soustredeni'] = deadline_soustredeni
|
||||
try:
|
||||
context['dead'] = datetime.combine(cas_deadline,
|
||||
datetime.max.time())
|
||||
context['ted'] = datetime.now()
|
||||
except:
|
||||
context['dead'] = None
|
||||
if nejblizsi_deadline[0] is not None:
|
||||
context['nejblizsi_deadline'] = datetime.combine(nejblizsi_deadline[0], datetime.max.time())
|
||||
else:
|
||||
context['dead'] = None
|
||||
context['deadline_soustredeni'] = deadline_soustredeni
|
||||
context['nejblizsi_deadline'] = None
|
||||
|
||||
context['typ_deadline'] = nejblizsi_deadline[1]
|
||||
|
||||
# Aktuální témata
|
||||
nazvy_a_odkazy_na_aktualni_temata = []
|
||||
akt_temata = aktualni_temata(nastaveni.aktualni_rocnik)
|
||||
|
||||
for tema in akt_temata:
|
||||
# FIXME: netuším, jestli funguje tema.verejne_url(), nemáme testdata na témátka - je to asi url vzhledem k ročníku
|
||||
nazvy_a_odkazy_na_aktualni_temata.append({'nazev':tema.nazev,'url':tema.verejne_url()})
|
||||
|
||||
context['aktualni_temata'] = nazvy_a_odkazy_na_aktualni_temata
|
||||
|
||||
print(context)
|
||||
|
||||
return context
|
||||
|
||||
class StareNovinkyView(generic.ListView):
|
||||
|
@ -343,7 +350,8 @@ class ArchivView(generic.ListView):
|
|||
### Výsledky
|
||||
|
||||
def sloupec_s_poradim(setrizene_body):
|
||||
""" Ze seznamu obsahujícího sestupně setřízené body řešitelů za daný ročník
|
||||
"""
|
||||
Ze seznamu obsahujícího sestupně setřízené body řešitelů za daný ročník
|
||||
vytvoří seznam s pořadími (včetně 3.-5. a pak 2 volná místa atp.),
|
||||
podle toho, jak jdou za sebou ve výsledkovce.
|
||||
Parametr:
|
||||
|
@ -383,7 +391,8 @@ def sloupec_s_poradim(setrizene_body):
|
|||
return sloupec_s_poradim
|
||||
|
||||
def cisla_rocniku(rocnik, jen_verejne=True):
|
||||
""" Vrátí všechna čísla daného ročníku.
|
||||
"""
|
||||
Vrátí všechna čísla daného ročníku.
|
||||
Parametry:
|
||||
rocnik (Rocnik): ročník semináře
|
||||
jen_verejne (bool): zda se mají vrátit jen veřejná, nebo všechna čísla
|
||||
|
@ -538,7 +547,7 @@ def vysledkovka_rocniku(rocnik, jen_verejne=True):
|
|||
|
||||
# získáme body za ročník, seznam obsahuje dvojice (řešitel_id, body) setřízené sestupně
|
||||
resitel_rocnikbody_sezn = secti_body_za_rocnik(rocnik, aktivni_resitele)
|
||||
|
||||
|
||||
# setřídíme řešitele podle počtu bodů a získáme seznam s body od nejvyšších po nenižší
|
||||
setrizeni_resitele_id, setrizeni_resitele, setrizene_body = setrid_resitele_a_body(resitel_rocnikbody_sezn)
|
||||
poradi = sloupec_s_poradim(setrizene_body)
|
||||
|
@ -773,6 +782,7 @@ def vysledkovka_cisla(cislo, context=None):
|
|||
return context
|
||||
|
||||
class CisloView(generic.DetailView):
|
||||
# FIXME zobrazování témátek a vůbec, teď je tam jen odkaz na číslo v pdf
|
||||
model = Cislo
|
||||
template_name = 'seminar/archiv/cislo.html'
|
||||
|
||||
|
@ -1332,3 +1342,10 @@ def formularOKView(request):
|
|||
}
|
||||
return render(request, template_name, context)
|
||||
|
||||
#------------------ Jak řešit - možná má být udělané úplně jinak
|
||||
|
||||
class JakResitView(generic.ListView):
|
||||
template_name = 'seminar/jak-resit.html'
|
||||
|
||||
def get_queryset(self):
|
||||
return None
|
||||
|
|
Loading…
Reference in a new issue