|
@@ -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',)
|