Parcourir la source

Add bulk send email in list view
Add confirm on send welcome email button in change form

Fabs il y a 10 ans
Parent
commit
bc212bb731

+ 19 - 6
coin/members/admin.py

@@ -9,6 +9,7 @@ from django.contrib.auth.models import Group
 from django.http import HttpResponseRedirect
 from django.conf.urls import url
 from django.contrib import messages
+from django.db.models.query import QuerySet
 
 from coin.members.models import Member, CryptoKey, LdapUser, MembershipFee
 from coin.members.membershipfee_filter import MembershipFeeFilter
@@ -36,7 +37,8 @@ class MemberAdmin(UserAdmin):
     list_filter = ('status', MembershipFeeFilter)
     search_fields = ['username', 'first_name', 'last_name', 'email']
     ordering = ('last_name',)
-    actions = [delete_selected, 'set_as_member', 'set_as_non_member']
+    actions = [delete_selected, 'set_as_member', 'set_as_non_member',
+               'bulk_send_welcome_email']
 
     form = MemberChangeForm
     add_form = MemberCreationForm
@@ -104,7 +106,6 @@ class MemberAdmin(UserAdmin):
             '%d membre(s) définis comme non adhérent(s).' % rows_updated)
     set_as_non_member.short_description = "Définir comme non adhérent"
 
-
     def get_urls(self):
         """Custom admin urls"""
         urls = super(MemberAdmin, self).get_urls()
@@ -118,20 +119,32 @@ class MemberAdmin(UserAdmin):
     def send_welcome_email(self, request, id):
         """
         Vue appelée lorsque l'admin souhaite envoyer l'email de bienvenue à un 
-        membre
+        membre.
         """
         # TODO : Add better perm here
         if request.user.is_superuser:
             member = get_object_or_404(Member, pk=id)
             member.send_welcome_email()
-            messages.success(request, 'Le courriel de bienvenue a été envoyé à %s' % member.email)
+            messages.success(request,
+                'Le courriel de bienvenue a été envoyé à %s' % member.email)
         else:
             messages.error(
-                request, 'Vous n\'avez pas l\'autorisation d\'envoyer le '
-                         'courriel de bienvenue.')
+                request, 'Vous n\'avez pas l\'autorisation d\'envoyer des '
+                         'courriels de bienvenue.')
 
         return HttpResponseRedirect(request.META["HTTP_REFERER"])
 
+    def bulk_send_welcome_email(self, request, queryset):
+        """
+        Action appelée lorsque l'admin souhaite envoyer un lot d'email de bienvenue 
+        depuis une sélection de membre dans la vue liste de l'admin
+        """
+        for member in queryset.all():
+            self.send_welcome_email(request, member.id)
+        messages.success(request,
+            'Le courriel de bienvenue a été envoyé à %d membre(s).' % queryset.count())
+    bulk_send_welcome_email.short_description = "Envoyer le courriel de bienvenue"
+
 class MembershipFeeAdmin(admin.ModelAdmin):
     list_display = ('member', 'end_date', 'amount', 'payment_method',
                     'payment_date')

+ 1 - 1
coin/members/templates/admin/members/member/change_form.html

@@ -1,6 +1,6 @@
 {% extends "admin/change_form.html" %}
 {% load url from future %}
 {% block object-tools-items %}
-    <li><a href="{% url 'admin:send_welcome_email' id=object_id %}">Envoyer le courriel de bienvenue</a></li>
+    <li><a href="{% url 'admin:send_welcome_email' id=object_id %}" onclick="return confirm('Voulez-vous vraiment envoyer le courriel de confirmation a ce membre ?');">Envoyer le courriel de bienvenue</a></li>
     {{ block.super }}
 {% endblock %}