Odevzdávátko: Odkazy z tabulky na seznam řešení daného řešitele
+ Zkrácení tabulky
This commit is contained in:
		
							parent
							
								
									3fd3838e77
								
							
						
					
					
						commit
						96a73c05d4
					
				
					 3 changed files with 43 additions and 3 deletions
				
			
		|  | @ -1,21 +1,31 @@ | |||
| {% extends "base.html" %} | ||||
| 
 | ||||
| {% load utils %} {# Možná by mohlo být někde výš v hierarchii templatů... #} | ||||
| 
 | ||||
| {% block content %} | ||||
| 
 | ||||
| <table> | ||||
| 	<tr> | ||||
| 		<td></td> {# Prázdná buňka v levém horním rohu #} | ||||
| 		{% for p in problemy %} | ||||
| 		<th> {{ p }} </th> | ||||
| 		<th> | ||||
| 			{# TODO: Přehled řešení k problému, odkázaný odsud? #} | ||||
| 			{{ p }} | ||||
| 		</th> | ||||
| 		{% endfor %} | ||||
| 	</tr> | ||||
| 	{% for resitel,hodnoty in radky%} | ||||
| 	<tr> | ||||
| 		<td> {{ resitel }} </td> | ||||
| 		<td> | ||||
| 			{# TODO: Chceme mít view i na řešení konkrétního řešitele ke všem problémům? #} | ||||
| 			{{ resitel }} | ||||
| 		</td> | ||||
| 		{% for hodn in hodnoty %} | ||||
| 			<td> | ||||
| 			{% if hodn %} | ||||
| 			{{ hodn.pocet_reseni }} řešení<br>{{ hodn.body }} bodů<br>{{ hodn.posledni_odevzdani }} | ||||
| 			<a href="{% url 'odevzdavatko_reseni_resitele_k_problemu' problem=hodn.problem_id resitel=hodn.resitel_id %}"> | ||||
| 				{{ hodn.pocet_reseni }} řeš.<br>{{ hodn.body }} b<br>{{ hodn.posledni_odevzdani|kratke_datum|default_if_none:"Nikdy"|default:"???"}} | ||||
| 			</a> | ||||
| 			{% endif %} | ||||
| 			</td> | ||||
| 		{% endfor %} | ||||
|  |  | |||
							
								
								
									
										27
									
								
								seminar/templatetags/utils.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								seminar/templatetags/utils.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| from django import template | ||||
| from datetime import datetime, timedelta | ||||
| from pytz import timezone | ||||
| from mamweb.settings import TIME_ZONE | ||||
| import logging | ||||
| register = template.Library() | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
| @register.filter(name='kratke_datum', expects_localtime=True) | ||||
| def kratke_datum(dt): | ||||
| 	# None dává None, ne-datum dává False, aby se daly použít filtry typu "default". | ||||
| 	if dt is None: | ||||
| 		return None | ||||
| 	if not isinstance(dt, datetime): | ||||
| 		logger.warning(f"Špatné volání filtru {__name__}: {dt}") | ||||
| 		return False | ||||
| 	naive_now = datetime.now() | ||||
| 	tz = timezone(TIME_ZONE) | ||||
| 	now = tz.localize(naive_now) | ||||
| 	delta = dt - now | ||||
| 	if delta <= timedelta(days=1): | ||||
| 		return dt.strftime("%k:%M") | ||||
| 	if delta <= timedelta(years=1): | ||||
| 		return dt.strftime("%d. %m.") | ||||
| 	return dt.strftime("%d. %m. %Y") | ||||
| 
 | ||||
|  | @ -57,6 +57,9 @@ class TabulkaOdevzdanychReseniView(ListView): | |||
| 					# FIXME: Možná dává smysl i mít None jako velké číslo -- jakože "TODO: zadat body" | ||||
| 					) | ||||
| 				tabulka[problem][resitel].pocet_reseni += 1 | ||||
| 			# Pro jednoduchost template si ještě poznamenáme ID problému a řešitele | ||||
| 			tabulka[problem][resitel].problem_id = problem.id | ||||
| 			tabulka[problem][resitel].resitel_id = resitel.id | ||||
| 		 | ||||
| 		for hodnoceni in self.get_queryset(): | ||||
| 			for resitel in hodnoceni.reseni.resitele.all(): | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky