~petersanchez/public-inbox

1

[PATCH django-impersonate] optimization | preserve request.user laziness

Details
Message ID
<CAJF=k3=Liko6RimSozkyM3eVDbo2XBMVTHoZs47HKVpAJ925hA@mail.gmail.com>
DKIM signature
missing
Download raw message
(I've used "reply in thread" link but it created separate topic, sorry)

In our case that means 100k+ requests every day =)

What do you think about this workaround? I've tested it locally.

class ImpersonateMiddleware(MiddlewareMixin):
    def process_request(self, request):
        _usr = request.user  # save as local var to prevent infinite recursion
        def _get_usr():
            _usr.is_impersonate = False
            return _usr

        request.user = SimpleLazyObject(_get_usr)
        request.impersonator = None

        if '_impersonate' in request.session and request.user.is_authenticated:
            ....
Details
Message ID
<20201223062642.cd6a4wbiy7cvb547@thinkpad>
In-Reply-To
<CAJF=k3=Liko6RimSozkyM3eVDbo2XBMVTHoZs47HKVpAJ925hA@mail.gmail.com> (view parent)
DKIM signature
missing
Download raw message
On 12/22, Илья wrote:
>class ImpersonateMiddleware(MiddlewareMixin):
>    def process_request(self, request):
>        _usr = request.user  # save as local var to prevent infinite recursion
>        def _get_usr():
>            _usr.is_impersonate = False
>            return _usr
>
>        request.user = SimpleLazyObject(_get_usr)
>        request.impersonator = None
>
>        if '_impersonate' in request.session and request.user.is_authenticated:
>            ....

This has been applied in changeset eed039f473c6

Thanks!
Reply to thread Export thread (mbox)