53 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.core.mail import EmailMessage
 | |
| from django.http import HttpRequest
 | |
| from django.urls import reverse
 | |
| 
 | |
| from korektury.models import Komentar, Oprava
 | |
| from personalni.models import Organizator
 | |
| 
 | |
| 
 | |
| def send_email_notification_komentar(oprava: Oprava, autor: Organizator, request: HttpRequest):
 | |
| 	''' Rozesle e-mail pri pridani komentare / opravy,
 | |
| 		ktery obsahuje text vlakna opravy.
 | |
| 	'''
 | |
| 
 | |
| 	# parametry e-mailu
 | |
| 	#odkaz = "https://mam.mff.cuni.cz/korektury/{}/".format(oprava.pdf.pk)
 | |
| 	odkaz = request.build_absolute_uri(reverse('korektury', kwargs={'pdf': oprava.pdf.pk}))
 | |
| 	odkaz = f"{odkaz}#kor{oprava.id}-pointer"
 | |
| 	from_email = 'korekturovatko@mam.mff.cuni.cz'
 | |
| 	subject = 'Nová korektura od {} v {}'.format(autor, oprava.pdf.nazev)
 | |
| 	texty = []
 | |
| 	for kom in Komentar.objects.filter(oprava=oprava):
 | |
| 		texty.append((kom.autor.osoba.plne_jmeno(),kom.text))
 | |
| 	optext = "\n\n\n".join([": ".join(t) for t in texty])
 | |
| 	text = u"Text komentáře:\n\n{}\n\n=== Konec textu komentáře ===\n\
 | |
| 				\nodkaz do korekturovátka: {}\n\
 | |
| 				\nVaše korekturovátko\n".format(optext, odkaz)
 | |
| 
 | |
| 	# Prijemci e-mailu
 | |
| 	emails = set()
 | |
| 
 | |
| 	# nalezeni e-mailu na autory komentaru
 | |
| 	for org in oprava.informovani_orgove.all():
 | |
| 		email_komentujiciho = org.osoba.email
 | |
| 		if email_komentujiciho:
 | |
| 			emails.add(email_komentujiciho)
 | |
| 
 | |
| 	# zodpovedni orgove
 | |
| 	for org in oprava.pdf.orgove.all():
 | |
| 		email_zobpovedny = org.osoba.email
 | |
| 		if email_zobpovedny:
 | |
| 			emails.add(email_zobpovedny)
 | |
| 
 | |
| 	# odstran e-mail autora opravy
 | |
| 	email = autor.osoba.email
 | |
| 	if email:
 | |
| 		emails.discard(email)
 | |
| 
 | |
| 	EmailMessage(
 | |
| 		subject=subject,
 | |
| 		body=text,
 | |
| 		from_email=from_email,
 | |
| 		to=list(emails),
 | |
| 	).send()
 |