diff --git a/apps/permission/backends.py b/apps/permission/backends.py index 49e1e87121337654052fb12948cc550485862e0e..8fa47f376b280c99593ac0cdca625233a3aa2bd7 100644 --- a/apps/permission/backends.py +++ b/apps/permission/backends.py @@ -36,7 +36,7 @@ class PermissionBackend(ModelBackend): # Unauthenticated users have no permissions return Permission.objects.none() - return Permission.objects.annotate( + qs = Permission.objects.annotate( club=F("rolepermissions__role__membership__club"), membership=F("rolepermissions__role__membership"), ).filter( @@ -50,7 +50,13 @@ class PermissionBackend(ModelBackend): & Q(rolepermissions__role__membership__user=user) & Q(type=t) & Q(mask__rank__lte=get_current_session().get("permission_mask", 0)) - ).distinct() + ) + + try: + qs = qs.distinct('pk', 'club') + except: # SQLite doesn't support distinct fields. + qs = qs.distinct() + return qs @staticmethod def permissions(user, model, type):