#26626: Update decorator_from_middleware to work with new-style middleware
-------------------------------+--------------------------------------
Reporter: Tim Graham | Owner: Carl Meyer
Type: New feature | Status: assigned
Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------------------------
Comment (by Andreas Pelme):
Another use case:
We have a custom authentication mechanism that is not tied to
contrib.admin for our main site.
However, we use contrib.auth for administrative accounts. To make it very
clear which views needs a real user, we have disabled the auth middleware
globally and use a custom admin site that selectively enables auth:
{{{
from django.contrib import admin
from django.contrib.auth.middleware import AuthenticationMiddleware
from django.utils.decorators import decorator_from_middleware
auth_decorator = decorator_from_middleware(AuthenticationMiddleware)
class AdminSite(admin.AdminSite):
def admin_view(self, view, cacheable=False):
super_wrapper = super().admin_view(view, cacheable=cacheable)
return auth_decorator(super_wrapper)
}}}
(This use case is fine and works fine in Django 1.10 since Django's built
in `AuthenticationMiddleware` is both old and new-style, but I just wanted
to highlight that `decorator_from_middleware` is useful in different
contexts)
--
Ticket URL: <https://code.djangoproject.com/ticket/26626#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.4dd04184d271c178856fe3f27bfcffb7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.