Skip to content

Commit

Permalink
Support language defaulting
Browse files Browse the repository at this point in the history
  • Loading branch information
ronanboiteau committed Aug 18, 2024
1 parent a04ba1a commit 4dc5fe6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
10 changes: 7 additions & 3 deletions post_office/mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,13 @@ def send(
# template can be an EmailTemplate instance or name
if isinstance(template, EmailTemplate):
template = template
# If language is specified, ensure template uses the right language
if language and template.language != language:
template = template.translated_templates.get(language=language)
try:
# If language is specified, ensure template uses the right language
if language and template.language != language:
template = template.translated_templates.get(language=language)
except EmailTemplate.DoesNotExist:
# If language version does not exist - use current template
pass
else:
template = get_email_template(template, language)

Expand Down
14 changes: 11 additions & 3 deletions post_office/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,22 @@ def get_email_template(name, language=''):
if use_cache:
use_cache = getattr(settings, 'POST_OFFICE_TEMPLATE_CACHE', True)
if not use_cache:
return EmailTemplate.objects.get(name=name, language=language)
try:
return EmailTemplate.objects.get(name=name, language=language)
except EmailTemplate.DoesNotExist:
# If translated email version does not exist - use default language version
return EmailTemplate.objects.get(name=name, default_template=None)
else:
composite_name = '%s:%s' % (name, language)
email_template = cache.get(composite_name)

if email_template is None:
email_template = EmailTemplate.objects.get(name=name, language=language)
cache.set(composite_name, email_template)
try:
email_template = EmailTemplate.objects.get(name=name, language=language)
cache.set(composite_name, email_template)
except EmailTemplate.DoesNotExist:
# If translated email version does not exist - try to use default language version
return EmailTemplate.objects.get(name=name, default_template=None)

return email_template

Expand Down

0 comments on commit 4dc5fe6

Please sign in to comment.