Korektura s tagy pošle e-mail i orgům, kteří mají zájem o daný tag #100
					 5 changed files with 44 additions and 4 deletions
				
			
		|  | @ -68,5 +68,10 @@ class OpravaAdmin(admin.ModelAdmin): | ||||||
| 	model = Oprava | 	model = Oprava | ||||||
| 	filter_horizontal = ("informovani_orgove", "tagy",) | 	filter_horizontal = ("informovani_orgove", "tagy",) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | class KorekturaTagAdmin(admin.ModelAdmin): | ||||||
|  | 	model = KorekturaTag | ||||||
|  | 	filter_horizontal = ("informovani_orgove", ) | ||||||
|  | 
 | ||||||
| admin.site.register(Oprava, OpravaAdmin) | admin.site.register(Oprava, OpravaAdmin) | ||||||
| admin.site.register(KorekturaTag) | admin.site.register(KorekturaTag, KorekturaTagAdmin) | ||||||
|  |  | ||||||
|  | @ -118,9 +118,6 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs): | ||||||
| 					y=y, | 					y=y, | ||||||
| 				) | 				) | ||||||
| 
 | 
 | ||||||
| 			Komentar.objects.create(oprava=oprava, autor=autor, text=text) |  | ||||||
| 			send_email_notification_komentar(oprava, autor, request) |  | ||||||
| 
 |  | ||||||
| 		tagy_raw = q.get('tagy') | 		tagy_raw = q.get('tagy') | ||||||
| 		if tagy_raw is not None: | 		if tagy_raw is not None: | ||||||
| 			oprava.tagy.clear() | 			oprava.tagy.clear() | ||||||
|  | @ -128,6 +125,11 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs): | ||||||
| 				tagy = list(map(int, tagy_raw.split(","))) | 				tagy = list(map(int, tagy_raw.split(","))) | ||||||
| 				oprava.tagy.add(*KorekturaTag.objects.filter(id__in=tagy)) | 				oprava.tagy.add(*KorekturaTag.objects.filter(id__in=tagy)) | ||||||
| 
 | 
 | ||||||
|  | 		# Pokud je korektura/komentář nová/-ý | ||||||
|  | 		if komentar_id == -1: | ||||||
|  | 			Komentar.objects.create(oprava=oprava, autor=autor, text=text) | ||||||
|  | 			send_email_notification_komentar(oprava, autor, request) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 	opravy = Oprava.objects.filter(pdf=pdf_id).all() | 	opravy = Oprava.objects.filter(pdf=pdf_id).all() | ||||||
| 	# Serializovat list je prý security vulnerability, tedy je přidán slovník pro bezpečnost | 	# Serializovat list je prý security vulnerability, tedy je přidán slovník pro bezpečnost | ||||||
|  |  | ||||||
							
								
								
									
										19
									
								
								korektury/migrations/0029_korekturatag_informovani_orgove.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								korektury/migrations/0029_korekturatag_informovani_orgove.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | # Generated by Django 4.2.16 on 2025-06-04 17:17 | ||||||
|  | 
 | ||||||
|  | from django.db import migrations, models | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  | 
 | ||||||
|  |     dependencies = [ | ||||||
|  |         ('personalni', '0019_rename_upozorneni_resitel_upozornovat_na_opravy_reseni'), | ||||||
|  |         ('korektury', '0028_alter_korekturovanepdf_options_and_more'), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.AddField( | ||||||
|  |             model_name='korekturatag', | ||||||
|  |             name='informovani_orgove', | ||||||
|  |             field=models.ManyToManyField(blank=True, default=None, help_text='Orgové informovaní při přidání komentáře ke korektuře s daným tagem', related_name='informovan_o_tagu', to='personalni.organizator', verbose_name='Informovaní organizátoři'), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -138,6 +138,13 @@ class KorekturaTag(models.Model): | ||||||
| 	nazev = models.CharField("název tagu", blank = False, max_length=20, help_text="Název daného tagu, <20 znaků") | 	nazev = models.CharField("název tagu", blank = False, max_length=20, help_text="Název daného tagu, <20 znaků") | ||||||
| 	barva = ColorField("barva daného tagu", default="#FFFFFF") | 	barva = ColorField("barva daného tagu", default="#FFFFFF") | ||||||
| 
 | 
 | ||||||
|  | 	informovani_orgove = models.ManyToManyField( | ||||||
|  | 		Organizator, blank=True, default=None, | ||||||
|  | 		verbose_name='Informovaní organizátoři', | ||||||
|  | 		help_text="Orgové informovaní při přidání komentáře ke korektuře s daným tagem", | ||||||
|  | 		related_name='informovan_o_tagu', | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
| 	def __str__(self): | 	def __str__(self): | ||||||
| 		return self.nazev | 		return self.nazev | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -40,6 +40,13 @@ def send_email_notification_komentar(oprava: Oprava, autor: Organizator, request | ||||||
| 		if email_zobpovedny: | 		if email_zobpovedny: | ||||||
| 			emails.add(email_zobpovedny) | 			emails.add(email_zobpovedny) | ||||||
| 
 | 
 | ||||||
|  | 	# orgove informovaní při korektuře | ||||||
|  | 	for tag in oprava.tagy.all(): | ||||||
|  | 		for org in tag.informovani_orgove.all(): | ||||||
|  | 			email_informovany = org.osoba.email | ||||||
|  | 			if email_informovany: | ||||||
|  | 				emails.add(email_informovany) | ||||||
|  | 
 | ||||||
| 	# odstran e-mail autora opravy | 	# odstran e-mail autora opravy | ||||||
| 	email = autor.osoba.email | 	email = autor.osoba.email | ||||||
| 	if email: | 	if email: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue