ferme #411, admin actualites
authorolivier larcheveque <olivier.larcheveque@u-ol.(none)>
Wed, 29 Sep 2010 17:23:07 +0000 (13:23 -0400)
committerolivier larcheveque <olivier.larcheveque@u-ol.(none)>
Wed, 29 Sep 2010 17:23:07 +0000 (13:23 -0400)
auf_savoirs_en_partage/savoirs/admin.py
auf_savoirs_en_partage/savoirs/admin_views.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/scripts/articles.in
auf_savoirs_en_partage/templates/savoirs/confirmation.html

index 3ba9e12..6159888 100644 (file)
@@ -14,7 +14,6 @@ from django.http import HttpResponseRedirect
 from models import SourceActualite, Actualite, Discipline, Evenement, Record, ListSet, HarvestLog, Profile
 from savoirs.globals import META
 
-admin.site.register(Actualite)
 admin.site.register(SourceActualite)
 admin.site.register(Evenement)
 
@@ -183,11 +182,11 @@ class RecordAdmin(ReadOnlyAdminFields, admin.ModelAdmin):
     # 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)))
+        return HttpResponseRedirect("/admin/confirmation/%s/%s?ids=%s" % ('record', '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)))
+        return HttpResponseRedirect("/admin/confirmation/%s/%s/?ids=%s" % ('record', 'invalider', ",".join(selected)))
 
     def assigner_pays(self, request, queryset):
         selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
@@ -236,3 +235,18 @@ class UserProfileAdmin(UserAdmin):
 admin.site.unregister(User)
 admin.site.register(User, UserProfileAdmin)
 
+class ActualiteAdmin(admin.ModelAdmin):
+    list_filter = ('visible',)
+    list_display = ('titre', 'date', 'visible')
+    actions = ['rendre_visible', 'rendre_invisible']
+
+    # actions
+    def rendre_visible(self, request, queryset):
+        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+        return HttpResponseRedirect("/admin/confirmation/%s/%s?ids=%s" % ('actualite', 'visible', ",".join(selected)))
+
+    def rendre_invisible(self, request, queryset):
+        selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+        return HttpResponseRedirect("/admin/confirmation/%s/%s?ids=%s" % ('actualite', 'invisible', ",".join(selected)))
+
+admin.site.register(Actualite, ActualiteAdmin)
index 83be48e..1e6795d 100644 (file)
@@ -7,7 +7,7 @@ from django.template import Context, RequestContext
 from django.shortcuts import render_to_response
 
 from datamaster_modeles.models import Thematique, Pays, Region
-from savoirs.models import Record, Discipline
+from savoirs.models import Record, Discipline, Actualite
 
 # Dashboard
 class RecordDashboard:
@@ -222,16 +222,33 @@ def assigner_thematiques(request):
 @login_required
 def confirmation(request, action):
     ids = request.GET.get("ids").split(",")
+    type, action  = action.split('/')[0:2]
 
     # determination du contexte de validation
     if action == u'valider':
-        records = [r for r in Record.objects.in_bulk(ids).values() if r.est_complet()]
+        objects = [r for r in Record.objects.in_bulk(ids).values() if r.est_complet()]
+        action = ('validated', True)
         desc = u'validées'
-        validated = True
+        model = u'références'
+
     elif action == u'invalider':
-        records = Record.objects.in_bulk(ids).values()
+        objects = Record.objects.in_bulk(ids).values()
+        action = ('validated', False)
         desc = u'invalidées'
-        validated = False
+        model = u'références'
+    
+    elif action == u'visible':
+        objects = Actualite.objects.in_bulk(ids).values()
+        action = ('visible', True)
+        desc = u'visibles'
+        model = u'actualités'
+    
+    elif action == u'invisible':
+        objects = Actualite.objects.in_bulk(ids).values()
+        action = ('visible', False)
+        desc = u'invisibles'
+        model = u'actualités'
+
     else:
        raise Exception("action invalide %s " % action)
 
@@ -239,22 +256,22 @@ def confirmation(request, action):
         confirmation_form = ConfirmationForm(request.POST)
 
         if confirmation_form.is_valid():
-            for r in records:
-                r.validated = validated
-                r.save()
+            for o in objects:
+                setattr(o, action[0], action[1])
+                o.save()
 
             succes = u""u"Les références ont été %s" % desc
             request.user.message_set.create(message=succes)
-            return HttpResponseRedirect('/admin/savoirs/record')
+            return HttpResponseRedirect('/admin/savoirs/%s' % type)
     else:
         confirmation_form = ConfirmationForm()
 
 
     return render_to_response ("savoirs/confirmation.html",
-            Context ({'records': records,
+            Context ({'objects': objects,
                       'action': action,
                       'form': confirmation_form,
                       'titre': u"Validation par lots",
-                      'description': u"Les références suivantes vont être %s:" % desc ,
+                      'description': u"Les %s suivantes vont être %s:" % (model, desc) ,
                       }),
                      context_instance = RequestContext(request))
index b1e6ab1..d0d4980 100644 (file)
@@ -30,11 +30,11 @@ class Actualite(models.Model):
     texte = models.TextField(db_column='texte_actualite')
     url = models.CharField(max_length=765, db_column='url_actualite')
     date = models.DateField(db_column='date_actualite')
-    visible = models.BooleanField(db_column='visible_actualite')
+    visible = models.BooleanField(db_column='visible_actualite', default = False)
     ancienid = models.IntegerField(db_column='ancienId_actualite', blank = True, null = True)
 
     def __unicode__ (self):
-        return "Actualite %d: %s" % (self.id, self.titre)
+        return "%s" % (self.titre)
 
     class Meta:
         db_table = u'actualite'
@@ -137,7 +137,7 @@ class Record(models.Model):
 
 
     def __unicode__(self):
-        return "R[%s] %s" % (self.id, self.title)
+        return "[%s] %s" % (self.server, self.title)
 
 # Ces fonctions sont utilisées pour travailler directement sur les données JSON enregistrées tel quel
 # sur la base de données. Lorsque le modèle est initialisé, les fields sont décodés, et lorsque l'objet
index 516f914..c2f9494 100644 (file)
@@ -29,6 +29,6 @@ for url in sources:
                           texte = entry.summary_detail.value,
                           url = entry.link,
                           date = date,
-                          visible = '0',
+                          visible = False,
                           ancienid = 0)
             print a.save()
index 06a2b2c..25f2ae2 100644 (file)
@@ -6,8 +6,8 @@
 <div id="content-main">
     <h1>{{description}}</h1>
 <ul>
-{% for r in records %}
-<li>[{{r.server}}] {{r.title}}</li>
+{% for o in objects %}
+<li>{{o}}</li>
 {% endfor %}
 </ul>
 </div>