ferme #459, moderation en lots (Valider et invalider)
authorolivier larcheveque <olivier.larcheveque@u-ol.(none)>
Mon, 27 Sep 2010 20:06:49 +0000 (16:06 -0400)
committerolivier larcheveque <olivier.larcheveque@u-ol.(none)>
Mon, 27 Sep 2010 20:06:49 +0000 (16:06 -0400)
auf_savoirs_en_partage/savoirs/admin.py
auf_savoirs_en_partage/savoirs/admin_views.py
auf_savoirs_en_partage/templates/savoirs/confirmation.html [new file with mode: 0644]
auf_savoirs_en_partage/urls.py

index e5c04bf..ca80aa0 100644 (file)
@@ -146,7 +146,9 @@ class RecordAdmin(ReadOnlyAdminFields, admin.ModelAdmin):
       'est_complet',
       'validated',
     )
-    actions = ['assigner_pays',
+    actions = ['valider_references',
+               'invalider_references',
+               'assigner_pays',
                'assigner_regions',
                'assigner_disciplines',
                'assigner_thematiques']
@@ -180,6 +182,14 @@ class RecordAdmin(ReadOnlyAdminFields, admin.ModelAdmin):
             return obj.description
 
     # actions
+    def valider_references(self, request, queryset):
+        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+        return HttpResponseRedirect("/admin/confirmation/%s?ids=%s" % ('valider', ",".join(selected)))
+
+    def invalider_references(self, request, queryset):
+        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+        return HttpResponseRedirect("/admin/confirmation/%s?ids=%s" % ('invalider', ",".join(selected)))
+
     def assigner_pays(self, request, queryset):
         selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
         return HttpResponseRedirect("/admin/assigner_%s?ids=%s" % ('pays', ",".join(selected)))
index c04c6c4..83be48e 100644 (file)
@@ -29,7 +29,6 @@ class RecordDashboard:
             serveurs = Serveur.objects.all()
         return [s.nom for s in serveurs]
 
-
     def total_a_faire(self,):
         """Retourne le total des références à traiter"""
         return len(self.tout_mes_records())
@@ -72,7 +71,9 @@ class ThematiquesForm(forms.Form):
 class DisciplinesForm(forms.Form):
     values = [(t.id, t.nom) for t in Discipline.objects.all()]
     disciplines = forms.MultipleChoiceField(choices=values)
+
+class ConfirmationForm(forms.Form):
+    pass
 
 @login_required
 def assigner_pays(request):
@@ -217,3 +218,43 @@ def assigner_thematiques(request):
                       'description': u"Sélectionner les thématiques qui seront associées aux références suivantes :" ,
                       }),
                      context_instance = RequestContext(request))
+
+@login_required
+def confirmation(request, action):
+    ids = request.GET.get("ids").split(",")
+
+    # determination du contexte de validation
+    if action == u'valider':
+        records = [r for r in Record.objects.in_bulk(ids).values() if r.est_complet()]
+        desc = u'validées'
+        validated = True
+    elif action == u'invalider':
+        records = Record.objects.in_bulk(ids).values()
+        desc = u'invalidées'
+        validated = False
+    else:
+       raise Exception("action invalide %s " % action)
+
+    if request.method == 'POST':
+        confirmation_form = ConfirmationForm(request.POST)
+
+        if confirmation_form.is_valid():
+            for r in records:
+                r.validated = validated
+                r.save()
+
+            succes = u""u"Les références ont été %s" % desc
+            request.user.message_set.create(message=succes)
+            return HttpResponseRedirect('/admin/savoirs/record')
+    else:
+        confirmation_form = ConfirmationForm()
+
+
+    return render_to_response ("savoirs/confirmation.html",
+            Context ({'records': records,
+                      'action': action,
+                      'form': confirmation_form,
+                      'titre': u"Validation par lots",
+                      'description': u"Les références suivantes vont être %s:" % desc ,
+                      }),
+                     context_instance = RequestContext(request))
diff --git a/auf_savoirs_en_partage/templates/savoirs/confirmation.html b/auf_savoirs_en_partage/templates/savoirs/confirmation.html
new file mode 100644 (file)
index 0000000..06a2b2c
--- /dev/null
@@ -0,0 +1,18 @@
+{% extends "admin/base_site.html" %}
+
+{% block title %}{{titre}}{% endblock %}
+
+{% block content %}
+<div id="content-main">
+    <h1>{{description}}</h1>
+<ul>
+{% for r in records %}
+<li>[{{r.server}}] {{r.title}}</li>
+{% endfor %}
+</ul>
+</div>
+<form action="" method="post">
+    {{form.as_p}}
+    <input type="submit" value="Oui, j'en suis certain" />
+</form>
+{% endblock %}
index c0f4116..ba979ca 100644 (file)
@@ -10,6 +10,7 @@ urlpatterns = patterns(
     '',
     url(r'^admin_tools/', include('admin_tools.urls')),
     (r'^admin/', include(admin.site.urls)),
+    (r'^admin/confirmation/(.*)', 'savoirs.admin_views.confirmation'),
     (r'^admin/assigner_pays', 'savoirs.admin_views.assigner_pays'),
     (r'^admin/assigner_regions', 'savoirs.admin_views.assigner_regions'),
     (r'^admin/assigner_thematiques', 'savoirs.admin_views.assigner_thematiques'),