1234567891011121314151617181920212223242526272829303132333435363738 |
- from functools import wraps
- from unittest.mock import patch
- from .useracl import get_user_acl
- __all__ = ["patch_user_acl"]
- class PatchUserACL:
- def patch_user_acl(self, user, patch):
- self.patches[user.id] = patch
- def patched_get_user_acl(self, user, cache_versions):
- user_acl = get_user_acl(user, cache_versions)
- user_acl.update(self.patches.get(user.id, {}))
- return user_acl
- def __enter__(self):
- self.patches = {}
- def __exit__(self, *_):
- self.patches = {}
- def __call__(self, f):
- @wraps(f)
- def inner(*args, **kwargs):
- with self as context:
- with patch(
- "misago.acl.useracl.get_user_acl",
- side_effect=self.patched_get_user_acl,
- ):
- new_args = args + (self.patch_user_acl,)
- return f(*new_args, **kwargs)
-
- return inner
- patch_user_acl = PatchUserACL()
|