Refactor: split code into several django apps (we call them modules).

This commit is contained in:
2018-12-13 14:47:58 +01:00
parent c23dc33d4e
commit 0d5a8c65e3
81 changed files with 739 additions and 332 deletions

View File

@@ -1,61 +1,5 @@
# -*- coding: utf-8 -*-
import logging
from django.apps import apps
from django.core.exceptions import ImproperlyConfigured
from django.core.mail import EmailMessage
from django.template.loader import get_template
logger = logging.getLogger(__name__)
class AbstractMail(object):
_subject = u''
_template_name = None
def _get_sender(self):
app_config = apps.get_containing_app_config(__package__)
return app_config.settings.email_sender
def _get_subject(self, subject_fmt=None, **kwargs):
if subject_fmt is None:
subject_fmt = self._subject
app_config = apps.get_containing_app_config(__package__)
if app_config.settings.email_subject_prefix:
subject_fmt = u'%s %s' % (app_config.settings.email_subject_prefix, subject_fmt)
subject = subject_fmt.format(**kwargs)
return subject
def _get_template(self):
if not self._template_name:
raise ImproperlyConfigured('%s._template_name ist not set.', self.__class__.__name__)
return get_template(self._template_name, using='PLAINTEXT')
def _get_context_data(self, extra_context=None):
app_config = apps.get_containing_app_config(__package__)
context = {
'base_url': app_config.settings.email_base_url,
}
if extra_context:
context.update(extra_context)
return context
def _get_body(self, context=None):
template = self._get_template()
context = self._get_context_data(extra_context=context)
return template.render(context)
def _get_recipients(self):
raise NotImplementedError()
def send(self):
subject = self._get_subject()
body = self._get_body()
sender = self._get_sender()
recipients = self._get_recipients()
emo = EmailMessage(subject=subject, body=body, from_email=sender, to=recipients)
logger.info(u'Send %s to %s', self.__class__.__name__, recipients)
emo.send()
from dav_base.emails import AbstractMail
class AbstractEventMail(AbstractMail):
@@ -149,26 +93,3 @@ class EventToPublishMail(AbstractEventMail):
context['editor'] = self._editor
context['confirm_publication_url'] = self._confirm_publication_action.get_absolute_url()
return context
class PasswordSetEmail(AbstractMail):
_subject = u'Zugangsdaten'
_template_name = 'dav_events/emails/password_set.txt'
def __init__(self, user, password):
self._user = user
self._password = password
def _get_recipients(self):
r = u'{fullname} <{email}>'.format(fullname=self._user.get_full_name(),
email=self._user.email)
return [r]
def _get_context_data(self, extra_context=None):
context = super(PasswordSetEmail, self)._get_context_data(extra_context=extra_context)
context.update({
'fullname': self._user.get_full_name(),
'username': self._user.username,
'password': self._password
})
return context