mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 11:27:09 +00:00
64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import logging
|
|
|
|
from django.apps import AppConfig
|
|
from django.conf import settings
|
|
from django.core import serializers
|
|
from django.db.models.signals import post_save
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def load_welcome_template_fixture(fixture_path) -> bool:
|
|
"""Load welcome email template from a JSON fixture."""
|
|
try:
|
|
with open(fixture_path) as f:
|
|
for deserialized in serializers.deserialize('json', f):
|
|
if deserialized.object.name == settings.TEMPLATE_WELCOME_EMAIL_NAME:
|
|
deserialized.save()
|
|
logger.warning('Welcome email template \'%s\' loaded', deserialized.object.name)
|
|
return True
|
|
|
|
return False
|
|
|
|
except FileNotFoundError:
|
|
logger.warning('Email template fixture not found.')
|
|
return False
|
|
|
|
|
|
def send_welcome_email(sender, instance, **kwargs):
|
|
from post_office import models
|
|
|
|
try:
|
|
instance.send_welcome_email()
|
|
|
|
except models.EmailTemplate.DoesNotExist:
|
|
logger.warning('Welcome email template \'%s\' not found - attempting to load from fixtures',
|
|
settings.TEMPLATE_WELCOME_EMAIL_NAME)
|
|
|
|
is_loaded = False
|
|
if settings.CUSTOMISATION_NAME:
|
|
# Customisation app present - try here first
|
|
is_loaded |= load_welcome_template_fixture(
|
|
settings.BASE_DIR.joinpath('custom', 'fixtures', 'email_templates.json')
|
|
)
|
|
|
|
# |= operator shortcuts - only try here if we don't already have it
|
|
is_loaded |= load_welcome_template_fixture(
|
|
settings.BASE_DIR.joinpath('people', 'fixtures', 'email_templates.json')
|
|
)
|
|
|
|
if is_loaded:
|
|
instance.send_welcome_email()
|
|
|
|
else:
|
|
logger.error('Welcome email template \'%s\' not found', settings.TEMPLATE_WELCOME_EMAIL_NAME)
|
|
|
|
|
|
class PeopleConfig(AppConfig):
|
|
name = 'people'
|
|
|
|
def ready(self) -> None:
|
|
# Activate signal handlers
|
|
post_save.connect(send_welcome_email,
|
|
sender='people.user')
|