Merge pull request 'Role v odevzdávátku' (!97) from odevzdavatko_role into master
Reviewed-on: #97
This commit is contained in:
		
						commit
						8bde5c7e4b
					
				
					 5 changed files with 78 additions and 3 deletions
				
			
		
							
								
								
									
										10
									
								
								odevzdavatko/static/css/odevzdavatko.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								odevzdavatko/static/css/odevzdavatko.css
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | ||||||
|  | .odevzdavatko-role { | ||||||
|  | 	font-size: 0.8em; | ||||||
|  | 	 | ||||||
|  | 	.vyrazne { | ||||||
|  | 		color: var(--hlavni-oranzova); | ||||||
|  | 	} | ||||||
|  | 	.nevyrazne { | ||||||
|  | 		color: #aaa; | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								odevzdavatko/templates/odevzdavatko/base.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								odevzdavatko/templates/odevzdavatko/base.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | {% extends "base.html" %} | ||||||
|  | {% load static %} | ||||||
|  | 
 | ||||||
|  | {% block custom_css %} | ||||||
|  |   <link href="{% static 'css/odevzdavatko.css' %}?version=1" rel="stylesheet"> | ||||||
|  | {% endblock %} | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| {% extends "base.html" %} | {% extends "odevzdavatko/base.html" %} | ||||||
| 
 | 
 | ||||||
| {% load barvy_reseni %} | {% load barvy_reseni %} | ||||||
|  | {% load orgove %} | ||||||
| 
 | 
 | ||||||
| {% block content %} | {% block content %} | ||||||
| 
 | 
 | ||||||
|  | @ -27,7 +28,15 @@ Do data (včetně): {{ filtr.reseni_do }} | ||||||
| 		{% for p in problemy %} | 		{% for p in problemy %} | ||||||
| 		<th> | 		<th> | ||||||
| 			{# TODO: Přehled řešení k problému, odkázaný odsud? #} | 			{# TODO: Přehled řešení k problému, odkázaný odsud? #} | ||||||
| 			 <span title="Autor: {{ p.autor }}, Garant: {{ p.garant }}, Opravovatelé: {{ p.opravovatele.all | join:", " }}">{{ p }}</span>{# TODO: role? e.g. Úloha 3.3 (role: AG) jakože autor a garant #} | 			<span title="Autor: {{ p.autor }}, Garant: {{ p.garant }}, Opravovatelé: {{ p.opravovatele.all | join:", " }}">{{ p }} | ||||||
|  | 				<span class="odevzdavatko-role"> | ||||||
|  | 					{% spaceless %} | ||||||
|  | 						<span class="{{ p|ma_autora:user|yesno:"vyrazne,nevyrazne" }}">A</span> | ||||||
|  | 						<span class="{{ p|ma_garanta:user|yesno:"vyrazne,nevyrazne" }}">G</span> | ||||||
|  | 						<span class="{{ p|ma_opravovatele:user|yesno:"vyrazne,nevyrazne" }}">O</span> | ||||||
|  | 					{% endspaceless %} | ||||||
|  | 				</span> | ||||||
|  | 			</span> | ||||||
| 		</th> | 		</th> | ||||||
| 		{% endfor %} | 		{% endfor %} | ||||||
| 	</tr> | 	</tr> | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								odevzdavatko/templatetags/orgove.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								odevzdavatko/templatetags/orgove.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | ||||||
|  | from django import template | ||||||
|  | register = template.Library() | ||||||
|  | 
 | ||||||
|  | from personalni.utils import organizator_cehokoliv | ||||||
|  | 
 | ||||||
|  | # Jen typová anotace | ||||||
|  | from tvorba.models import Problem | ||||||
|  | from personalni.models import Osoba, Organizator, Resitel, Prijemce | ||||||
|  | from django.contrib.auth.models import AnonymousUser, User | ||||||
|  | 
 | ||||||
|  | @register.filter | ||||||
|  | def ma_autora(p: Problem, o: Osoba | Organizator | User | AnonymousUser | Resitel | Prijemce) -> bool | None: | ||||||
|  | 	o = organizator_cehokoliv(o) | ||||||
|  | 	if o is None: return None | ||||||
|  | 	return p.autor == o | ||||||
|  | 
 | ||||||
|  | @register.filter | ||||||
|  | def ma_garanta(p: Problem, o: Osoba | Organizator | User | AnonymousUser | Resitel | Prijemce) -> bool | None: | ||||||
|  | 	o = organizator_cehokoliv(o) | ||||||
|  | 	if o is None: return None | ||||||
|  | 	return p.garant == o | ||||||
|  | 
 | ||||||
|  | @register.filter | ||||||
|  | def ma_opravovatele(p: Problem, o: Osoba | Organizator | User | AnonymousUser | Resitel | Prijemce) -> bool | None: | ||||||
|  | 	o = organizator_cehokoliv(o) | ||||||
|  | 	if o is None: return None | ||||||
|  | 	return p.opravovatele.contains(o) | ||||||
|  | @ -201,4 +201,27 @@ def resitel_uzivatele(u: User | AnonymousUser) -> Resitel | None: | ||||||
| 	if o is None: return None | 	if o is None: return None | ||||||
| 	return resitel_osoby(o) | 	return resitel_osoby(o) | ||||||
| 
 | 
 | ||||||
| # TODO: organizator_osoby, organizator_uzivatele | def resitel_cehokoliv(r: User | AnonymousUser | Osoba | Organizator | Resitel | Prijemce) -> Organizator | None: | ||||||
|  | 		if isinstance(r, User): r = resitel_uzivatele(r) | ||||||
|  | 		if isinstance(r, Osoba): r = resitel_osoby(r) | ||||||
|  | 		if isinstance(r, Resitel) or isinstance(r, Prijemce): r = resitel_osoby(r.osoba) | ||||||
|  | 		assert isinstance(r, Resitel) or r is None | ||||||
|  | 		return r | ||||||
|  | 
 | ||||||
|  | def organizator_osoby(o: Osoba) -> Organizator | None: | ||||||
|  | 	try: | ||||||
|  | 		return o.org | ||||||
|  | 	except Osoba.org.RelatedObjectDoesNotExist: | ||||||
|  | 		return None | ||||||
|  | 
 | ||||||
|  | def organizator_uzivatele(u: User | AnonymousUser) -> Organizator | None: | ||||||
|  | 	o = osoba_uzivatele(u) | ||||||
|  | 	if o is None: return None | ||||||
|  | 	return organizator_osoby(o) | ||||||
|  | 
 | ||||||
|  | def organizator_cehokoliv(o: User | AnonymousUser | Osoba | Organizator | Resitel | Prijemce) -> Organizator | None: | ||||||
|  | 		if isinstance(o, User): o = organizator_uzivatele(o) | ||||||
|  | 		if isinstance(o, Osoba): o = organizator_osoby(o) | ||||||
|  | 		if isinstance(o, Resitel) or isinstance(o, Prijemce): o = organizator_osoby(o.osoba) | ||||||
|  | 		assert isinstance(o, Organizator) or o is None | ||||||
|  | 		return o | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue