groups: make superuser have access to everything
authorNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Tue, 28 May 2013 17:11:56 +0000 (19:11 +0200)
committerNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Tue, 28 May 2013 17:11:56 +0000 (19:11 +0200)
Signed-off-by: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
xnet/groups/decorators.py

index 55b942f..189da82 100644 (file)
@@ -52,14 +52,22 @@ class group_required(object):
             if not request.user.is_authenticated():
                 return redirect_to_login(request.build_absolute_uri())
 
-            try:
-                membership = request.user.memberships.get(
+            # A superuser is admin of every group, but there is no membership in the database
+            if request.user.is_superuser:
+                membership = Membership(
                     xgroup=group,
-                    level__gte=self.level,
-                    state='enabled',
-                )
-            except Membership.DoesNotExist:
-                membership = None
+                    user=request.user,
+                    level=Membership.LEVEL_ADMIN,
+                    state='enabled')
+            else:
+                try:
+                    membership = request.user.memberships.get(
+                        xgroup=group,
+                        level__gte=self.level,
+                        state='enabled',
+                    )
+                except Membership.DoesNotExist:
+                    membership = None
 
             request.group = group
             request.membership = membership