Resolve $user token to User.id for use in permissions based on custom fields

This commit is contained in:
Brian Tiemann 2024-08-26 13:52:35 -04:00
parent dab27695b9
commit 05bcfd7722

View File

@ -1,7 +1,10 @@
from django.conf import settings from django.conf import settings
from django.apps import apps
from django.db.models import Q from django.db.models import Q
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from users.constants import CONSTRAINT_TOKEN_USER
__all__ = ( __all__ = (
'get_permission_for_model', 'get_permission_for_model',
'permission_is_exempt', 'permission_is_exempt',
@ -93,6 +96,9 @@ def qs_filter_from_constraints(constraints, tokens=None):
def _replace_tokens(value, tokens): def _replace_tokens(value, tokens):
if type(value) is list: if type(value) is list:
return list(map(lambda v: tokens.get(v, v), value)) return list(map(lambda v: tokens.get(v, v), value))
User = apps.get_model('users.User')
if value == CONSTRAINT_TOKEN_USER and type(tokens[CONSTRAINT_TOKEN_USER] is User):
return tokens[CONSTRAINT_TOKEN_USER].id
return tokens.get(value, value) return tokens.get(value, value)
params = Q() params = Q()