From 2f475d3790d48534134f7ac4123b41ddf61b3b4d Mon Sep 17 00:00:00 2001
From: Nicolas Joyard <joyard.nicolas@gmail.com>
Date: Fri, 10 Jun 2016 21:09:55 +0200
Subject: [PATCH] Disable active filter for countries and chambers

---
 core/views.py               | 17 +++++++++++++++--
 memopol/views/group_list.py | 18 +++++++++++++-----
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/core/views.py b/core/views.py
index 508d14a5..6b72f0bf 100644
--- a/core/views.py
+++ b/core/views.py
@@ -15,6 +15,14 @@ class ActiveLegislatureMixin(object):
         self.set_active_only()
         return super(ActiveLegislatureMixin, self).get(*args, **kwargs)
 
+    def override_active_only(self):
+        """
+        Redefine this method to override active legislature selection
+        - return None to enable user choice
+        - return True or False to disable user choice and set active state
+        """
+        return None
+
     def set_active_only(self):
         if 'active_only' in self.request.GET:
             self.request.session['active_only'] = \
@@ -23,11 +31,16 @@ class ActiveLegislatureMixin(object):
             self.request.session['active_only'] = self.default_active_only
 
     def get_active_only(self):
-        return self.request.session['active_only']
+        overriden = self.override_active_only()
+        if overriden is None:
+            return self.request.session['active_only']
+        else:
+            return overriden
 
     def get_context_data(self, **kwargs):
         c = super(ActiveLegislatureMixin, self).get_context_data(**kwargs)
-        c['active_only'] = self.get_active_only()
+        if self.override_active_only() is None:
+            c['active_only'] = self.get_active_only()
         return c
 
 
diff --git a/memopol/views/group_list.py b/memopol/views/group_list.py
index 638e73fe..0bd57f47 100644
--- a/memopol/views/group_list.py
+++ b/memopol/views/group_list.py
@@ -12,14 +12,22 @@ from representatives.models import Group
 
 class GroupList(PaginationMixin, ActiveLegislatureMixin, generic.ListView):
 
+    def override_active_only(self):
+        kind = self.kwargs.get('kind')
+
+        if kind == 'chamber' or kind == 'country':
+            return False
+        else:
+            return None
+
     def get_queryset(self):
         qs = Group.objects.all()
 
-    	if self.get_active_only():
-	        qs = qs.filter(
-	            models.Q(mandates__end_date__gte=datetime.date.today()) |
-	            models.Q(mandates__end_date__isnull=True)
-	        )
+        if self.get_active_only():
+            qs = qs.filter(
+                models.Q(mandates__end_date__gte=datetime.date.today()) |
+                models.Q(mandates__end_date__isnull=True)
+            )
 
         kind = self.kwargs.get('kind', None)
         if kind:
-- 
GitLab