123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # -*- coding: utf-8 -*-
- 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, SyncCommandError
- class MaillingListAdmin(admin.ModelAdmin):
- list_display = ('email', 'verbose_name')
- actions = ['sync_to_server']
- def sync_to_server(self, request, queryset):
- for _list in queryset.all():
- try:
- _list.sync_to_list_server()
- except Exception as e:
- messages.error(
- request,
- 'Impossible de synchroniser la liste {} : "{}"'.format(
- _list, e))
- else:
- messages.success(
- request,
- 'Liste {} synchronisée vers le serveur'.format(
- _list.email))
- sync_to_server.short_description = (
- 'Synchroniser les listes sélectionnées vers le serveur')
- form = autocomplete_light.modelform_factory(
- MaillingList,
- 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)
|