Add utils app
This commit is contained in:
parent
72c3149cc0
commit
6a74124adf
24 changed files with 4235 additions and 0 deletions
67
utils/mailer.py
Executable file
67
utils/mailer.py
Executable file
|
|
@ -0,0 +1,67 @@
|
|||
import six
|
||||
from django.core.mail import send_mail
|
||||
from django.core.mail import EmailMultiAlternatives
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
|
||||
class BaseEmail(object):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.to = kwargs.get('to')
|
||||
self.template_name = kwargs.get('template_name')
|
||||
self.template_path = kwargs.get('template_path')
|
||||
self.subject = kwargs.get('subject')
|
||||
self.context = kwargs.get('context', {})
|
||||
self.template_full_path = '%s%s' % (self.template_path, self.template_name)
|
||||
text_content = render_to_string('%s.txt' % self.template_full_path, self.context)
|
||||
html_content = render_to_string('%s.html' % self.template_full_path, self.context)
|
||||
|
||||
self.email = EmailMultiAlternatives(self.subject, text_content)
|
||||
self.email.attach_alternative(html_content, "text/html")
|
||||
if 'from_address' in kwargs:
|
||||
self.email.from_email = kwargs.get('from_address')
|
||||
else:
|
||||
self.email.from_email = '(ungleich) ungleich Support <info@ungleich.ch>'
|
||||
self.email.to = [kwargs.get('to', 'info@ungleich.ch')]
|
||||
|
||||
def send(self):
|
||||
self.email.send()
|
||||
|
||||
|
||||
class BaseMailer(object):
|
||||
def __init__(self):
|
||||
self._slug = None
|
||||
self.no_replay_mail = 'info@ungleich.ch'
|
||||
|
||||
if not hasattr(self, '_to'):
|
||||
self._to = None
|
||||
|
||||
@property
|
||||
def slug(self):
|
||||
return self._slug
|
||||
|
||||
@slug.setter
|
||||
def slug(self, val):
|
||||
assert isinstance(val, six.string_types), "slug is not string: %r" % val
|
||||
self._slug = val
|
||||
|
||||
@property
|
||||
def registration(self):
|
||||
return self.message
|
||||
|
||||
@registration.setter
|
||||
def registration(self, val):
|
||||
msg = "registration is not dict with fields subject,message"
|
||||
assert type(val) is dict, msg
|
||||
assert val.get('subject') and val.get('message'), msg
|
||||
self._message, self._subject, self._from = (
|
||||
val.get('message'), val.get('subject'), val.get('from'))
|
||||
assert isinstance(self.slug, six.string_types), 'slug not set'
|
||||
|
||||
def send_mail(self, to=None):
|
||||
if not to:
|
||||
to = self._to
|
||||
if not self.message:
|
||||
raise NotImplementedError
|
||||
send_mail(self._subject, self._message, self.no_replay_mail, [to])
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue