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 orgove %} | ||||
| 
 | ||||
| {% block content %} | ||||
| 
 | ||||
|  | @ -27,7 +28,15 @@ Do data (včetně): {{ filtr.reseni_do }} | |||
| 		{% for p in problemy %} | ||||
| 		<th> | ||||
| 			{# 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> | ||||
| 		{% endfor %} | ||||
| 	</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 | ||||
| 	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