asgi fix maybe

This commit is contained in:
Laura Klünder 2023-12-02 02:50:46 +01:00
parent f1876903c3
commit ac151e5eed

View file

@ -2,8 +2,6 @@ from channels.db import database_sync_to_async
from channels.middleware import BaseMiddleware as BaseChannelsMiddleware
from django.utils.functional import LazyObject, SimpleLazyObject, lazy
from c3nav.control.models import UserPermissions, UserSpaceAccess
class UserPermissionsLazyObject(LazyObject):
def _setup(self):
@ -23,6 +21,7 @@ class UserPermissionsMiddleware:
return getattr(request, '_user_permissions_cache')
except AttributeError:
pass
from c3nav.control.models import UserPermissions
result = UserPermissions.get_for_user(request.user)
request._user_permissions_cache = result
return result
@ -33,6 +32,7 @@ class UserPermissionsMiddleware:
return getattr(request, '_user_space_accesses_cache')
except AttributeError:
pass
from c3nav.control.models import UserSpaceAccess
result = UserSpaceAccess.get_for_user(request.user)
request._user_space_accesses_cache = result
return result
@ -46,6 +46,7 @@ class UserPermissionsMiddleware:
class UserPermissionsChannelMiddleware(BaseChannelsMiddleware):
async def __call__(self, scope, receive, send):
# todo: this doesn't seem to actually be lazy. and scope["user"] isn't either?
from c3nav.control.models import UserPermissions
scope["user_permissions"] = UserPermissionsLazyObject()
scope["user_permissions"]._wrapped = await database_sync_to_async(UserPermissions.get_for_user)(scope["user"])