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