52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import six
|
|
from django.core.mail import send_mail
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
class BaseMailer(object):
|
|
def __init__(self):
|
|
self._slug = None
|
|
self.no_replay_mail = 'no-replay@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])
|
|
|
|
|
|
class DigitalGlarusRegistrationMailer(BaseMailer):
|
|
message = settings.REGISTRATION_MESSAGE
|
|
|
|
def __init__(self, slug):
|
|
self.slug = slug
|
|
self.registration = self.message
|
|
self._message = self._message.format(slug=self._slug)
|
|
super().__init__()
|