mirror of
https://github.com/ansible/awx.git
synced 2026-02-25 23:16:01 -03:30
change how we detect the current user to avoid a nuanced recursion error
see: https://github.com/ansible/ansible-tower/issues/7802
This commit is contained in:
@@ -21,7 +21,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
|
|
||||||
# Django REST Framework
|
# Django REST Framework
|
||||||
from rest_framework.authentication import get_authorization_header
|
from rest_framework.authentication import get_authorization_header
|
||||||
from rest_framework.exceptions import PermissionDenied
|
from rest_framework.exceptions import PermissionDenied, AuthenticationFailed
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
@@ -115,6 +115,10 @@ class APIView(views.APIView):
|
|||||||
|
|
||||||
drf_request = super(APIView, self).initialize_request(request, *args, **kwargs)
|
drf_request = super(APIView, self).initialize_request(request, *args, **kwargs)
|
||||||
request.drf_request = drf_request
|
request.drf_request = drf_request
|
||||||
|
try:
|
||||||
|
request.drf_request_user = getattr(drf_request, 'user', False)
|
||||||
|
except AuthenticationFailed:
|
||||||
|
request.drf_request_user = None
|
||||||
return drf_request
|
return drf_request
|
||||||
|
|
||||||
def finalize_response(self, request, response, *args, **kwargs):
|
def finalize_response(self, request, response, *args, **kwargs):
|
||||||
|
|||||||
@@ -558,8 +558,8 @@ def get_current_user_from_drf_request(sender, **kwargs):
|
|||||||
drf_request on the underlying Django Request object.
|
drf_request on the underlying Django Request object.
|
||||||
'''
|
'''
|
||||||
request = get_current_request()
|
request = get_current_request()
|
||||||
drf_request = getattr(request, 'drf_request', None)
|
drf_request_user = getattr(request, 'drf_request_user', False)
|
||||||
return (getattr(drf_request, 'user', False), 0)
|
return (drf_request_user, 0)
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_delete, sender=Organization)
|
@receiver(pre_delete, sender=Organization)
|
||||||
|
|||||||
Reference in New Issue
Block a user