diff --git a/odevzdavatko/views.py b/odevzdavatko/views.py index 995b5840..5ab7c14d 100644 --- a/odevzdavatko/views.py +++ b/odevzdavatko/views.py @@ -1,7 +1,7 @@ from django.core.exceptions import PermissionDenied from django.views.generic import ListView, DetailView, FormView from django.contrib.auth.mixins import LoginRequiredMixin -from django.core.mail import send_mail +from django.core.mail import send_mail, EmailMessage from django.utils import timezone from django.views.generic import ListView, DetailView, FormView, CreateView from django.views.generic.list import MultipleObjectTemplateResponseMixin,MultipleObjectMixin @@ -243,6 +243,23 @@ def hodnoceniReseniView(request, pk, *args, **kwargs): if poznamka_form.has_changed(): poznamka_form.save() if hodnoceni_formset.has_changed(): hodnoceni_formset.save() + zmeny = [] + for hodnoceni_form in hodnoceni_formset: + if 'feedback' in hodnoceni_form.changed_data: + zmeny.append(hodnoceni_form.instance) + + if zmeny: + adresati = reseni.resitele.filter(upozorneni=True).values_list('osoba__email', flat=True) + if adresati: + email = EmailMessage( + subject='Změna zpětné vazby k Tvému řešení', + body='\n\n'.join([f'{hodnoceni.problem}\n{hodnoceni.feedback}' for hodnoceni in zmeny]) + f'\n\nNechceš-li toto upozornění dostávat, můžeš jej vypnout v nastavení svého účtu.\n\nTvoji organizátoři M&M', + from_email='odevzdavatko@mam.mff.cuni.cz', + to=adresati, + reply_to=[request.user.email] or None, + ) + email.send() + return redirect(success_url) diff --git a/personalni/forms.py b/personalni/forms.py index ea200267..27329ee5 100644 --- a/personalni/forms.py +++ b/personalni/forms.py @@ -177,6 +177,7 @@ class ProfileEditForm(forms.Form): zasilat_cislo_emailem = forms.BooleanField(label='Chci dostávat email s upozorněním na vydání nového čísla', required=False) spam = forms.BooleanField(label='Souhlasím se zasíláním materiálů od MFF UK', required=False) + upozorneni = forms.BooleanField(label='Chci dostat email, když opravovatel přidá zpětnou vazbu k mému řešení', required=False) # def clean_username(self): # err_logger = logging.getLogger('seminar.prihlaska.problem') # username = self.cleaned_data.get('username') diff --git a/personalni/templates/personalni/udaje/edit.html b/personalni/templates/personalni/udaje/edit.html index 5ec690d9..7a10675b 100644 --- a/personalni/templates/personalni/udaje/edit.html +++ b/personalni/templates/personalni/udaje/edit.html @@ -97,6 +97,15 @@ {% include "personalni/udaje/prihlaska_field.html" with field=form.spam %} +