Rappel: Action rappel
authorPA Parent <paparent@paparent.me>
Wed, 12 Oct 2011 17:23:08 +0000 (13:23 -0400)
committerPA Parent <paparent@paparent.me>
Wed, 12 Oct 2011 17:23:08 +0000 (13:23 -0400)
auf_savoirs_en_partage/rappels/actions.py [new file with mode: 0644]
auf_savoirs_en_partage/rappels/admin.py
auf_savoirs_en_partage/rappels/models.py
auf_savoirs_en_partage/templates/admin/rappels/chercheurrappel/rappel_selected_confirmation.html [new file with mode: 0644]

diff --git a/auf_savoirs_en_partage/rappels/actions.py b/auf_savoirs_en_partage/rappels/actions.py
new file mode 100644 (file)
index 0000000..c0c70a5
--- /dev/null
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+import datetime
+
+from django import template
+from django.contrib.admin import helpers
+from django.shortcuts import render_to_response
+from django.utils.translation import ugettext as _
+
+from models import Rappel, RappelUser
+
+
+def rappel(modeladmin, request, queryset):
+
+    opts = modeladmin.model._meta
+    app_label = opts.app_label
+
+    if request.POST.get('post'):
+
+        today = datetime.date.today()
+        lastyear = today - datetime.timedelta(days=365)
+
+        rappel = Rappel()
+        rappel.user_creation = request.user
+        rappel.date_cible = lastyear
+        rappel.date_limite = today + datetime.timedelta(days=30)
+        rappel.sujet = "Savoirs en partage : vérification de votre fiche chercheur"
+        rappel.contenu = "Bla"
+        rappel.save()
+
+        for chercheur in queryset:
+            rappeluser = RappelUser()
+            rappeluser.rappel = rappel
+            rappeluser.user = chercheur.user
+            rappeluser.save()
+
+        n = queryset.count()
+
+        modeladmin.message_user(
+            request,
+            u"%(count)d rappel(s) ont été envoyé(s)." % {"count": n}
+        )
+
+        return None
+
+    context = {
+        "title": _("Are you sure?"),
+        "queryset": queryset,
+        "app_label": app_label,
+        "opts": opts,
+        "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME,
+    }
+
+    return render_to_response("admin/rappels/chercheurrappel/rappel_selected_confirmation.html",
+        context, context_instance=template.RequestContext(request))
+
+rappel.short_description = 'Envoyer rappel: Vérification fiche chercheur'
index 566f527..f71a0a4 100644 (file)
@@ -4,12 +4,15 @@ from django.contrib import admin
 
 from chercheurs.admin import ChercheurAdmin
 from rappels.models import ChercheurRappel
+from rappels import actions
 
 
 class ChercheurRappelAdmin(ChercheurAdmin):
     list_display = ['__unicode__', 'last_login']
-
     list_editable = []
+
+    actions = [actions.rappel]
+
     fields = ['salutation', 'nom', 'prenom', 'courriel', 'afficher_courriel',
               'fonction', 'date_naissance', 'sousfonction', 'telephone',
               'adresse_postale', 'genre', 'commentaire',
@@ -33,5 +36,20 @@ class ChercheurRappelAdmin(ChercheurAdmin):
     def queryset(self, request):
         return ChercheurRappel.objects
 
+    def has_delete_permission(self, request, obj=None):
+        return False
+
+    def get_actions(self, request):
+        actions = super(ChercheurRappelAdmin, self).get_actions(request)
+
+        del actions['delete_selected']
+        del actions['export_as_ods']
+        del actions['export_as_csv']
+        if 'remove_from_group' in actions:
+            del actions['remove_from_group']
+
+        return actions
+
+
 
 admin.site.register(ChercheurRappel, ChercheurRappelAdmin)
index 43bf145..35e38f0 100644 (file)
@@ -32,6 +32,7 @@ class RappelUser(models.Model):
         super(RappelUser, self).save(*args, **kwargs)
 
         # Envoi du courriel...
+        print "Envoi du courriel à %s" % self.user.email
 
 
 class ChercheurRappelManager(models.Manager):
diff --git a/auf_savoirs_en_partage/templates/admin/rappels/chercheurrappel/rappel_selected_confirmation.html b/auf_savoirs_en_partage/templates/admin/rappels/chercheurrappel/rappel_selected_confirmation.html
new file mode 100644 (file)
index 0000000..d3d2a48
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends "admin/base_site.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}
+<div class="breadcrumbs">
+     <a href="../../">{% trans "Home" %}</a> &rsaquo;
+     <a href="../">{{ app_label|capfirst }}</a> &rsaquo;
+     <a href="./">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo;
+     Rappel
+</div>
+{% endblock %}
+
+{% block content %}
+    <p>Êtes vous sûr d'envoyer tous ces rappels</p>
+       <ul>
+    {% for object in queryset %}
+        <li>{{ object }}</li>
+       {% endfor %}
+       </ul>
+    <form action="" method="post">{% csrf_token %}
+    <div>
+    {% for obj in queryset %}
+    <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk }}" />
+    {% endfor %}
+    <input type="hidden" name="action" value="rappel" />
+    <input type="hidden" name="post" value="yes" />
+    <input type="submit" value="Confirmer et envoyer le rappel" />
+    </div>
+    </form>
+{% endblock %}