Parcourir la source

notifications des allocations aux managers

Élie Bouttier il y a 8 ans
Parent
commit
c81ff3c737
1 fichiers modifiés avec 45 ajouts et 0 suppressions
  1. 45 0
      services/admin.py

+ 45 - 0
services/admin.py

@@ -4,6 +4,7 @@ from django.forms import ModelForm
 from django.utils import timezone
 from django.core.urlresolvers import reverse
 from django.utils.html import format_html
+from django.core.mail import mail_managers
 
 from adhesions.models import Adhesion
 from .models import Service, ServiceType, IPResource, Route, ResourceAllocation
@@ -185,6 +186,50 @@ class ResourceAllocationAdmin(admin.ModelAdmin):
     def has_delete_permission(self, request, obj=None):
         return False
 
+    def save_model(self, request, obj, form, change):
+        fields = ['resource', 'service', 'route', 'start', 'end', 'active', 'notes']
+
+        new_alloc = obj
+        if change:
+            old_alloc = ResourceAllocation.objects.get(pk=new_alloc.pk)
+        else:
+            old_alloc = None
+
+        super().save_model(request, obj, form, change)
+
+        message = 'Bénévole : ' + str(request.user.profile)
+        message += '\n\nAllocation :'
+
+        diff = False
+        for field in fields:
+            new_attr = getattr(new_alloc, field)
+            if new_attr == '' or new_attr is None:
+                new_attr = '-'
+            if old_alloc:
+                old_attr = getattr(old_alloc, field)
+                if old_attr == '' or old_attr is None:
+                    old_attr = '-'
+            if change and old_attr != new_attr:
+                message += '\n-%12s: %s\n+%12s: %s' % (field, old_attr, field, new_attr)
+                diff = True
+            else:
+                message += '\n %12s: %s' % (field, new_attr)
+
+        url = 'https' if request.is_secure() else 'http'
+        url += '://' + request.get_host()
+        url += reverse('admin:services_resourceallocation_change', args=(obj.pk,))
+        message += '\n\nVoir : ' + url
+
+        if old_alloc and diff:
+            sujet = 'Modification d’une allocation'
+        elif not old_alloc:
+            sujet = 'Nouvelle allocation'
+        else:
+            sujet = None
+
+        if sujet:
+            mail_managers(sujet, message)
+
 
 class ServiceTypeAdmin(admin.ModelAdmin):
     fields = ('name',)