Browse Source

Graceful handling of MaillingList save failure

warn user.
Jocelyn Delalande 6 years ago
parent
commit
64b0e37f95
1 changed files with 21 additions and 1 deletions
  1. 21 1
      maillists/admin.py

+ 21 - 1
maillists/admin.py

@@ -6,8 +6,9 @@ from __future__ import unicode_literals
 import autocomplete_light
 from django.contrib import admin
 from django.contrib import messages
+from django.http import HttpResponseRedirect
 
-from .models import MaillingList
+from .models import MaillingList, SyncCommandError
 
 
 class MaillingListAdmin(admin.ModelAdmin):
@@ -36,5 +37,24 @@ class MaillingListAdmin(admin.ModelAdmin):
         fields='__all__',
     )
 
+    def change_view(self, request, object_id, form_url='', extra_context=None):
+        try:
+            return super(MaillingListAdmin, self).change_view(
+                request, object_id, form_url, extra_context)
+
+        except SyncCommandError as e:
+            try:
+                ml = MaillingList.objects.get(pk=object_id)
+                ml_name = "La liste mail « {} »".format(ml.short_name)
+            except MaillingList.DoesNotExist:
+                ml_name = "La nouvelle liste mail"
+
+            messages.error(
+                request,
+                "{} n'a pas pu être synchronisée".format(ml_name) +
+                " vers le serveur de listes : « {} ». Vous pouvez".format(e) +
+                " relancer la synchro depuis la liste des listes mail.")
+            return HttpResponseRedirect(request.path)
+
 
 admin.site.register(MaillingList, MaillingListAdmin)