Nicer urls for groups
authorArthur Darcet <arthur.darcet@m4x.org>
Sat, 2 Feb 2013 19:14:38 +0000 (20:14 +0100)
committerArthur Darcet <arthur.darcet@m4x.org>
Sat, 2 Feb 2013 19:14:38 +0000 (20:14 +0100)
xnet/accounts/decorators.py
xnet/accounts/urls.py
xnet/accounts/views.py
xnet/templates/groups/base.html
xnet/templates/groups/index.html

index 825df8d..bc29091 100644 (file)
@@ -12,8 +12,8 @@ class group_required(object):
 
     def __call__(self, view_func):
         @functools.wraps(view_func)
-        def wrapped_view_func(request, group_id, *args, **kwargs):
-            group = get_object_or_404(XGroup, pk=group_id)
+        def wrapped_view_func(request, group_slug, *args, **kwargs):
+            group = get_object_or_404(XGroup, short=group_slug)
             membership = request.user.memberships.filter(
                 xgroup=group,
                 level__gte=self.level,
index 5f4b864..a7601a3 100644 (file)
@@ -4,7 +4,7 @@ from django.conf.urls.defaults import patterns, url
 urlpatterns = patterns(
     'xnet.accounts.views',
     url(r'^$', 'index', name='group-list'),
-    url(r'^home/([0-9]+)$', 'home', name='group-home'),
-    url(r'^directory/([0-9]+)$', 'directory', name='group-directory'),
-    url(r'^([a-zA-Z0-9]+)/delete/([a-zA-Z0-9\.]+)$', 'membership_delete', name='membership-delete'),
+    url(r'^(\w+)/$', 'home', name='group-home'),
+    url(r'^(\w+)/directory/?$', 'directory', name='group-directory'),
+    url(r'^(\w+)/delete/([a-zA-Z0-9\.]+)$', 'membership_delete', name='membership-delete'),
 )
index aab40ea..6a508fc 100644 (file)
@@ -11,15 +11,14 @@ def index(request):
         'sidebar': 'list',
     })
 
-def home(request, pk):
+def home(request, slug):
     return render(request, 'groups/home.html', {
-        'group': get_object_or_404(XGroup, pk=pk),
+        'group': get_object_or_404(XGroup, short=slug),
         'sidebar': 'home',
     })
 
 @group_required()
 def directory(request, group, membership=None):
-    print(group.memberships.filter(state='enabled').order_by('level'))
     return render(request, 'groups/directory.html', {
         'group': group,
         'memberships': group.memberships. \
index eb9eeab..14db8a8 100644 (file)
     <h3>{{ group }}</h3>
     <ul class="nav nav-tabs nav-stacked">
         <li {% if sidebar == 'home' %}class="active"{% endif %}>
-            <a href="{% url 'accounts:group-home' group.pk %}">Fiche</a>
+            <a href="{% url 'accounts:group-home' group.short %}">Fiche</a>
         </li>
         <li {% if sidebar == 'directory' %}class="active"{% endif %}>
-            <a href="{% url 'accounts:group-directory' group.pk %}">Annuaire</a>
+            <a href="{% url 'accounts:group-directory' group.short %}">Annuaire</a>
         </li>
     </ul>
 {% endif %}
index 9d3cd59..f12fc08 100644 (file)
@@ -24,7 +24,7 @@
     <input type="text" class="search-field input-block-level" data-target="{{ group.grouper }}_type" />
     <ul class="unstyled">
         {% for item in group.list %}
-          <li><a href="{% url 'accounts:group-home' item.pk %}">{{ item }}</a></li>
+          <li><a href="{% url 'accounts:group-home' item.short %}">{{ item }}</a></li>
         {% endfor %}
     </ul>
 </div>