emails.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import datetime
  2. import pytz
  3. from django.conf import settings
  4. from django.core.mail import send_mail
  5. from django.utils.translation import activate
  6. def _get_contrib_context(contrib, mgmt_token, request=None):
  7. """ Sends an email related to a contrib
  8. """
  9. activate(settings.LANGUAGE_CODE)
  10. if request:
  11. permalink = contrib.get_absolute_url(request)
  12. else:
  13. permalink = None
  14. ndays = (contrib.expiration_date - datetime.datetime.now(pytz.utc)).days
  15. return {
  16. 'contrib': contrib,
  17. 'ndays': ndays,
  18. 'isp': settings.ISP,
  19. 'management_link': contrib.make_management_url(mgmt_token),
  20. 'mgmt_token': mgmt_token,
  21. 'permalink': permalink,
  22. }
  23. def send_contributor_email(
  24. contrib, subject_template, body_template, mgmt_token, request=None):
  25. context = _get_contrib_context(contrib, mgmt_token, request)
  26. send_mail(
  27. subject_template.render(context),
  28. body_template.render(context),
  29. settings.DEFAULT_FROM_EMAIL,
  30. [contrib.email],
  31. )
  32. return context
  33. def send_moderator_emails(
  34. contrib, subject_template, body_template, mgmt_token, request):
  35. context = _get_contrib_context(contrib, mgmt_token, request)
  36. if len(settings.NOTIFICATION_EMAILS) > 0:
  37. send_mail(
  38. subject_template.render(context),
  39. body_template.render(context),
  40. settings.DEFAULT_FROM_EMAIL,
  41. settings.NOTIFICATION_EMAILS,
  42. )
  43. return context