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
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky