utils.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from django.core.mail.message import EmailMultiAlternatives
  2. from django.core.urlresolvers import reverse
  3. from django.conf import settings
  4. def mail_managers(subject, message, fail_silently=False, connection=None,
  5. html_message=None, **kwargs):
  6. """Send a message to the managers, as defined by the MANAGERS setting."""
  7. if not settings.MANAGERS:
  8. return
  9. mail = EmailMultiAlternatives(
  10. '%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject), message,
  11. settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS],
  12. connection=connection, **kwargs
  13. )
  14. if html_message:
  15. mail.attach_alternative(html_message, 'text/html')
  16. mail.send(fail_silently=fail_silently)
  17. def notify_allocation(request, new_alloc, old_alloc=None):
  18. fields = ['resource', 'service', 'route', 'start', 'end', 'active', 'notes']
  19. benevole = '%s <%s>' % (request.user.username, request.user.email)
  20. message = 'Bénévole : ' + benevole
  21. message += '\n\nAllocation :'
  22. diff = False
  23. for field in fields:
  24. new_attr = getattr(new_alloc, field)
  25. if new_attr == '' or new_attr is None:
  26. new_attr = '-'
  27. if old_alloc:
  28. old_attr = getattr(old_alloc, field)
  29. if old_attr == '' or old_attr is None:
  30. old_attr = '-'
  31. if old_alloc and old_attr != new_attr:
  32. message += '\n-%12s: %s\n+%12s: %s' % (field, old_attr, field, new_attr)
  33. diff = True
  34. else:
  35. message += '\n %12s: %s' % (field, new_attr)
  36. url = 'https' if request.is_secure() else 'http'
  37. url += '://' + request.get_host()
  38. url += reverse('admin:services_ipresource_change', args=(new_alloc.resource.pk,))
  39. message += '\n\nVoir : ' + url
  40. if old_alloc and diff:
  41. sujet = 'Modification d’une allocation'
  42. elif not old_alloc:
  43. sujet = 'Nouvelle allocation'
  44. else:
  45. sujet = None
  46. if sujet:
  47. sujet += ' ADT%d' % new_alloc.service.adhesion.pk
  48. mail_managers(sujet, message, cc=[benevole])