vkk.workhours.accounting.mailing_list.forms

A collection of forms used for managing mailing lists.

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

A Form subclass for sending email to different groups Users.

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

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

declared_fields = {'mailing_list': <django.forms.fields.ChoiceField object>, 'subject': <django.forms.fields.CharField object>, 'message': <django.forms.fields.CharField object>}
base_fields = {'mailing_list': <django.forms.fields.ChoiceField object>, 'subject': <django.forms.fields.CharField object>, 'message': <django.forms.fields.CharField object>}
Inherited Members
django.forms.forms.BaseForm
BaseForm
default_renderer
field_order
prefix
use_required_attribute
template_name_div
template_name_p
template_name_table
template_name_ul
template_name_label
is_bound
data
files
auto_id
initial
error_class
label_suffix
empty_permitted
fields
renderer
order_fields
errors
is_valid
add_prefix
add_initial_prefix
template_name
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