mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 11:27:09 +00:00
fix: Fix welcome email bugs
Send only when new user is created Require email address when user created Resolves #32
This commit is contained in:
@@ -5,7 +5,7 @@ from django.conf import settings
|
||||
from django.core import serializers
|
||||
from django.db.models.signals import post_save
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
|
||||
|
||||
|
||||
def load_welcome_template_fixture(fixture_path) -> bool:
|
||||
@@ -15,7 +15,8 @@ def load_welcome_template_fixture(fixture_path) -> bool:
|
||||
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)
|
||||
logger.warning('Welcome email template \'%s\' loaded',
|
||||
deserialized.object.name)
|
||||
return True
|
||||
|
||||
return False
|
||||
@@ -25,39 +26,44 @@ def load_welcome_template_fixture(fixture_path) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def send_welcome_email(sender, instance, **kwargs):
|
||||
def send_welcome_email(sender, instance, created, **kwargs):
|
||||
from post_office import models
|
||||
|
||||
if not created:
|
||||
# If user already exists, don't send welcome message
|
||||
return
|
||||
|
||||
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)
|
||||
|
||||
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')
|
||||
)
|
||||
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')
|
||||
)
|
||||
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)
|
||||
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')
|
||||
post_save.connect(send_welcome_email, sender='people.user')
|
||||
|
||||
Reference in New Issue
Block a user