vkk.workhours.accounting.mailing_list.forms

 1from smtplib import SMTPException
 2from django import forms
 3from django.core.mail import send_mail
 4from django.utils.translation import gettext_lazy as _
 5from vkk.models import User, ProjectManager
 6
 7MAILING_CHOICES = [
 8    ('0', _('All Users')),
 9    ('1', _('Project Managers')),
10    ('2', _('Accountants'))
11]
12
13class MailingListForm(forms.Form):
14    mailing_list = forms.ChoiceField(label=_('Mailing List'), choices=MAILING_CHOICES)
15    subject = forms.CharField(label=_('Subject'), max_length=255, empty_value=True)
16    message = forms.CharField(label=_('Message'), max_length=16383, widget=forms.Textarea())
17    
18    def send_mail(self):
19        if not self.is_valid():
20            return
21
22        mailing_list = self.cleaned_data["mailing_list"]
23        email_addresses = None
24        if mailing_list == '0':
25            email_addresses = list(
26                User.objects.filter(
27                    is_active=True
28                ).values_list('email', flat=True)
29            )
30        elif mailing_list == '1':
31            email_addresses = list(
32                    ProjectManager.objects.filter(
33                    manager__is_active=True,
34                ).values_list('manager__email', flat=True)
35                )
36        elif mailing_list == '2':
37            email_addresses = list(
38                    User.objects.filter(
39                    is_active=True,
40                    is_accountant=True,
41                ).values_list('email', flat=True)
42            )
43        
44        try:
45            send_mail(
46                subject=self.cleaned_data["subject"],
47                message=self.cleaned_data["message"],
48                from_email=None,
49                recipient_list=email_addresses
50            )
51        except SMTPException:
52            raise
53
54        return
55        
class MailingListForm(django.forms.forms.Form):
14class MailingListForm(forms.Form):
15    mailing_list = forms.ChoiceField(label=_('Mailing List'), choices=MAILING_CHOICES)
16    subject = forms.CharField(label=_('Subject'), max_length=255, empty_value=True)
17    message = forms.CharField(label=_('Message'), max_length=16383, widget=forms.Textarea())
18    
19    def send_mail(self):
20        if not self.is_valid():
21            return
22
23        mailing_list = self.cleaned_data["mailing_list"]
24        email_addresses = None
25        if mailing_list == '0':
26            email_addresses = list(
27                User.objects.filter(
28                    is_active=True
29                ).values_list('email', flat=True)
30            )
31        elif mailing_list == '1':
32            email_addresses = list(
33                    ProjectManager.objects.filter(
34                    manager__is_active=True,
35                ).values_list('manager__email', flat=True)
36                )
37        elif mailing_list == '2':
38            email_addresses = list(
39                    User.objects.filter(
40                    is_active=True,
41                    is_accountant=True,
42                ).values_list('email', flat=True)
43            )
44        
45        try:
46            send_mail(
47                subject=self.cleaned_data["subject"],
48                message=self.cleaned_data["message"],
49                from_email=None,
50                recipient_list=email_addresses
51            )
52        except SMTPException:
53            raise
54
55        return

A collection of Fields, plus their associated data.

def send_mail(self):
19    def send_mail(self):
20        if not self.is_valid():
21            return
22
23        mailing_list = self.cleaned_data["mailing_list"]
24        email_addresses = None
25        if mailing_list == '0':
26            email_addresses = list(
27                User.objects.filter(
28                    is_active=True
29                ).values_list('email', flat=True)
30            )
31        elif mailing_list == '1':
32            email_addresses = list(
33                    ProjectManager.objects.filter(
34                    manager__is_active=True,
35                ).values_list('manager__email', flat=True)
36                )
37        elif mailing_list == '2':
38            email_addresses = list(
39                    User.objects.filter(
40                    is_active=True,
41                    is_accountant=True,
42                ).values_list('email', flat=True)
43            )
44        
45        try:
46            send_mail(
47                subject=self.cleaned_data["subject"],
48                message=self.cleaned_data["message"],
49                from_email=None,
50                recipient_list=email_addresses
51            )
52        except SMTPException:
53            raise
54
55        return
media

Return all media required to render the widgets on this form.

Inherited Members
django.forms.forms.BaseForm
BaseForm
order_fields
errors
is_valid
add_prefix
add_initial_prefix
get_context
non_field_errors
add_error
has_error
full_clean
clean
has_changed
changed_data
is_multipart
hidden_fields
visible_fields
get_initial_for_field
django.forms.utils.RenderableFormMixin
as_p
as_table
as_ul
as_div
django.forms.utils.RenderableMixin
render