[#3617] Ne pas planter lorsqu'on a des paramètres GET invalides dans la sitothèque
authorEric Mc Sween <eric.mcsween@auf.org>
Tue, 25 Sep 2012 14:48:02 +0000 (10:48 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Tue, 25 Sep 2012 14:48:02 +0000 (10:48 -0400)
auf_savoirs_en_partage/sitotheque/views.py

index daecd34..8ce4bb7 100644 (file)
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-from django.shortcuts import render, get_object_or_404
+from django.shortcuts import render, get_object_or_404, redirect
 
 from savoirs.lib.recherche import excerpt_function
 from sitotheque.models import Site
@@ -8,13 +8,16 @@ from sitotheque.forms import SiteSearchForm
 
 def index(request):
     search_form = SiteSearchForm(request.GET)
-    sites = search_form.save(commit=False).run()
-    excerpt = excerpt_function(Site.objects, search_form.cleaned_data['q'])
-    nb_sites = sites.count()
-    return render(request, "sites/index.html", {
-        'sites': sites, 'search_form': search_form, 'excerpt': excerpt,
-        'nb_sites': nb_sites
-    })
+    if search_form.is_valid():
+        sites = search_form.save(commit=False).run()
+        excerpt = excerpt_function(Site.objects, search_form.cleaned_data['q'])
+        nb_sites = sites.count()
+        return render(request, "sites/index.html", {
+            'sites': sites, 'search_form': search_form, 'excerpt': excerpt,
+            'nb_sites': nb_sites
+        })
+    else:
+        return redirect('sites')
 
 
 def retrieve(request, id):