From d62ba20035ce6ee21a53a60513dffb02e953393d Mon Sep 17 00:00:00 2001
From: Nicolas Joyard <joyard.nicolas@gmail.com>
Date: Wed, 8 Jun 2016 22:39:25 +0200
Subject: [PATCH] Restore singular-only and add permanent redirect for groups

---
 memopol/urls.py            | 31 +++++++++++++++++++++----------
 memopol/views/redirects.py |  9 +++++++++
 2 files changed, 30 insertions(+), 10 deletions(-)
 create mode 100644 memopol/views/redirects.py

diff --git a/memopol/urls.py b/memopol/urls.py
index 6175d54b..5f6e885f 100644
--- a/memopol/urls.py
+++ b/memopol/urls.py
@@ -9,6 +9,7 @@ from views.dossier_list import DossierList
 from views.group_list import GroupList
 from views.representative_detail import RepresentativeDetail
 from views.representative_list import RepresentativeList
+from views.redirects import RedirectGroupList
 
 import api
 
@@ -17,43 +18,53 @@ admin.autodiscover()
 urlpatterns = [
     # Project-specific overrides
     url(
-        r'^legislature/representatives?/(?P<group_kind>\w+)/(?P<chamber>.+)/' +
+        r'^legislature/representative/(?P<group_kind>\w+)/(?P<chamber>.+)/' +
         r'(?P<group>.+)/$',
         RepresentativeList.as_view(),
         name='representative-list'
     ),
     url(
-        r'^legislature/representatives?/(?P<group_kind>\w+)/(?P<group>.+)/$',
+        r'^legislature/representative/(?P<group_kind>\w+)/(?P<group>.+)/$',
         RepresentativeList.as_view(),
         name='representative-list'
     ),
     url(
-        r'^legislature/representatives?/(?P<slug>[-\w]+)/$',
+        r'^legislature/representative/$',
+        RepresentativeList.as_view(),
+        name='representative-list'
+    ),
+    url(
+        r'^legislature/representative/(?P<slug>[-\w]+)/$',
         RepresentativeDetail.as_view(),
         name='representative-detail'
     ),
     url(
-        r'^legislature/groups?/$',
+        r'^legislature/group/$',
         GroupList.as_view(),
         name='group-list'
     ),
     url(
-        r'^legislature/groups?/(?P<kind>\w+)/$',
+        r'^legislature/groups/$',
+        RedirectGroupList.as_view(),
+        name='group-list-redirect'
+    ),
+    url(
+        r'^legislature/group/(?P<kind>\w+)/$',
         GroupList.as_view(),
         name='group-list'
     ),
     url(
-        r'^legislature/representatives?/$',
-        RepresentativeList.as_view(),
-        name='representative-list'
+        r'^legislature/groups/(?P<kind>\w+)/$',
+        RedirectGroupList.as_view(),
+        name='group-list-redirect'
     ),
     url(
-        r'^votes/dossiers?/$',
+        r'^votes/dossier/$',
         DossierList.as_view(),
         name='dossier-list'
     ),
     url(
-        r'^votes/dossiers?/(?P<pk>\d+)/$',
+        r'^votes/dossier/(?P<pk>\d+)/$',
         DossierDetail.as_view(),
         name='dossier-detail'
     ),
diff --git a/memopol/views/redirects.py b/memopol/views/redirects.py
new file mode 100644
index 00000000..876c7eab
--- /dev/null
+++ b/memopol/views/redirects.py
@@ -0,0 +1,9 @@
+# coding: utf-8
+
+from django.views.generic.base import RedirectView
+
+
+class RedirectGroupList(RedirectView):
+    permanent = True
+    query_string = True
+    pattern_name = 'group-list'
-- 
GitLab