utils.py 2.1 KB

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