Exemplo n.º 1
0
class EvaluationEmailForm(forms.Form):
    recipients = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=EmailTemplate.Recipients.choices, label=_("Send email to"))
    subject = forms.CharField(label=_("Subject"))
    body = forms.CharField(widget=forms.Textarea(), label=_("Message"))

    def __init__(self, *args, evaluation, export=False, **kwargs):
        super().__init__(*args, **kwargs)
        self.template = EmailTemplate()
        self.evaluation = evaluation
        self.recipient_groups = None
        self.fields['subject'].required = not export
        self.fields['body'].required = not export

    def clean(self):
        self.recipient_groups = self.cleaned_data.get('recipients')

        if not self.recipient_groups:
            raise forms.ValidationError(_("No recipient selected. Choose at least one group of recipients."))

        return self.cleaned_data

    def email_addresses(self):
        recipients = self.template.recipient_list_for_evaluation(self.evaluation, self.recipient_groups, filter_users_in_cc=False)
        return set(user.email for user in recipients if user.email)

    def send(self, request):
        self.template.subject = self.cleaned_data.get('subject')
        self.template.body = self.cleaned_data.get('body')
        self.template.send_to_users_in_evaluations([self.evaluation], self.recipient_groups, use_cc=True, request=request)
Exemplo n.º 2
0
 def send(self, request):
     self.template.subject = self.cleaned_data.get('subject')
     self.template.body = self.cleaned_data.get('body')
     EmailTemplate.send_to_users_in_evaluations(self.template,
                                                [self.evaluation],
                                                self.recipient_groups,
                                                use_cc=True,
                                                request=request)
Exemplo n.º 3
0
 def test_no_login_url_when_cc_users_in_cc(self):
     self.user.cc_users.add(self.other_user)
     EmailTemplate.send_to_users_in_evaluations(self.template, [self.evaluation], [EmailTemplate.CONTRIBUTORS], use_cc=True, request=None)
     self.assertEqual(len(mail.outbox), 2)
     self.assertEqual(mail.outbox[0].body, "")  # message does not contain the login url
     self.assertEqual(mail.outbox[1].body, self.user.login_url)  # separate email with login url was sent
     self.assertEqual(len(mail.outbox[1].cc), 0)
     self.assertEqual(mail.outbox[1].to, [self.user.email])
Exemplo n.º 4
0
 def test_login_url_when_nobody_in_cc(self):
     # message is not sent to others in cc
     EmailTemplate.send_to_users_in_evaluations(
         self.template, [self.evaluation], [EmailTemplate.CONTRIBUTORS],
         use_cc=True,
         request=None)
     self.assertEqual(len(mail.outbox), 1)
     self.assertEqual(
         mail.outbox[0].body,
         self.user.login_url)  # message does contain the login url
Exemplo n.º 5
0
 def test_login_url_when_use_cc_is_false(self):
     # message is not sent to others in cc
     self.user.delegates.add(self.other_user)
     EmailTemplate.send_to_users_in_evaluations(
         self.template, [self.evaluation], [EmailTemplate.CONTRIBUTORS],
         use_cc=False,
         request=None)
     self.assertEqual(len(mail.outbox), 1)
     self.assertEqual(
         mail.outbox[0].body,
         self.user.login_url)  # message does contain the login url
Exemplo n.º 6
0
 def send(self, request):
     self.template.subject = self.cleaned_data.get('subject')
     self.template.body = self.cleaned_data.get('body')
     EmailTemplate.send_to_users_in_evaluations(self.template, [self.evaluation], self.recipient_groups, use_cc=True, request=request)