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 User
s.
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
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
- visible_fields
- get_initial_for_field
- django.forms.utils.RenderableFormMixin
- as_p
- as_table
- as_ul
- as_div
- django.forms.utils.RenderableMixin
- render