changeset 95:801166bc508a

Add '/u', '/us', '/p', '/pr' URL aliases
author Sylvain Beucler <beuc@beuc.net>
date Wed, 29 Jul 2009 15:01:00 +0200
parents 5c90eef9f2c1
children 6de5ac0cba27
files src/savane/my/views.py src/savane/svmain/urls.py src/savane/svmain/views.py
diffstat 3 files changed, 37 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/savane/my/views.py
+++ b/src/savane/my/views.py
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from django.template import RequestContext
-from django.shortcuts import render_to_response
+from django.shortcuts import render_to_response, get_object_or_404
 from django.http import HttpResponseRedirect
 from django.contrib.auth import authenticate, login, logout
 from django.contrib.auth.decorators import login_required
--- a/src/savane/svmain/urls.py
+++ b/src/savane/svmain/urls.py
@@ -20,6 +20,7 @@
 from django.conf.urls.defaults import *
 
 from savane.svmain import models as svmain_models
+import views
 
 urlpatterns = patterns ('',
   url(r'^$', 'django.views.generic.simple.direct_to_template',
@@ -33,15 +34,19 @@
   # TODO: not sure about the views naming convention - all this
   # "models in 'svmain', views in 'my'" is getting messy, probably a
   # mistake from me (Beuc) :P
-  url(r'^projects/(?P<slug>[-\w]+)$', 'django.views.generic.list_detail.object_detail',
+  url(r'^p/(?P<slug>[-\w]+)$', 'django.views.generic.list_detail.object_detail',
       { 'queryset' : svmain_models.ExtendedGroup.objects.all(),
         'slug_field' : 'name' },
       name='savane.svmain.group_detail'),
+  url(r'^pr/(?P<slug>[-\w]+)$', views.group_redir),
+  url(r'^projects/(?P<slug>[-\w]+)$', views.group_redir),
 
-  url(r'^users/(?P<slug>[-\w]+)$', 'django.views.generic.list_detail.object_detail',
+  url(r'^u/(?P<slug>[-\w]+)$', 'django.views.generic.list_detail.object_detail',
       { 'queryset' : svmain_models.ExtendedUser.objects.all(),
         'slug_field' : 'username' },
       name='savane.svmain.user_detail'),
+  url(r'^us/(?P<slug>[-\w]+)$', views.user_redir),
+  url(r'^users/(?P<slug>[-\w]+)$', views.user_redir),
 
   url(r'^license/$', 'django.views.generic.list_detail.object_list',
       { 'queryset' : svmain_models.License.objects.all(), },
new file mode 100644
--- /dev/null
+++ b/src/savane/svmain/views.py
@@ -0,0 +1,29 @@
+# Manage user attributes
+# Copyright (C) 2009  Sylvain Beucler
+#
+# This file is part of Savane.
+# 
+# Savane is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+# 
+# Savane is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from django.http import HttpResponseRedirect
+from django.shortcuts import render_to_response, get_object_or_404
+import models as svmain_models
+
+def group_redir(request, slug):
+    eg = get_object_or_404(svmain_models.ExtendedGroup, name=slug)
+    return HttpResponseRedirect(eg.get_absolute_url())
+
+def user_redir(request, slug):
+    ug = get_object_or_404(svmain_models.ExtendedUser, username=slug)
+    return HttpResponseRedirect(ug.get_absolute_url())