Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2022-03-05 Thread Django
#26626: Update decorator_from_middleware to work with new-style middleware
---+
 Reporter:  Tim Graham |Owner:  (none)
 Type:  New feature|   Status:  new
Component:  HTTP handling  |  Version:  dev
 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
---+
Changes (by Mariusz Felisiak):

 * owner:  Carl Meyer => (none)
 * status:  assigned => new


-- 
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107017f59d0d33b-099c99ef-6bba-4973-ab38-19c69ae997e9-00%40eu-central-1.amazonses.com.


Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2017-11-01 Thread Django
#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 David Svenson):

 The following function takes a new-style middleware class and makes a view
 decorator out of it. It's used in code that me and @pelme are working on,
 though not as a decorator.

 {{{
 def decorator_from_middleware_new(new_middleware_cls):
 def view_decorator(view_function):
 def view(request, *args, **kwargs):
 def get_response(request_inner):
 assert request is request_inner

 try:
 return view_function(request, *args, **kwargs)
 except Exception as e:
 new_middleware.process_exception(request, e)
 return HttpResponseServerError()

 new_middleware = new_middleware_cls(get_response)
 return new_middleware(request)

 return view

 return view_decorator
 }}}

-- 
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.579d22b1b974ef6a3c382f8518753be9%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2017-02-13 Thread Django
#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: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
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.


Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2017-02-13 Thread Django
#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):

 A use case for this is tests. I have a middleware that handles temporary
 unavailability by showing a loading page/returning HTTP 503 for certain
 exceptions.

 This particular middleware uses custom logic in `__call__` and
 `process_exception`. `decorator_from_middleware` makes it easy to test
 this middleware:

 {{{
 @override_settings(MAINTENANCE_MODE=True)
 def test_maintenance_mode(self):
 @decorator_from_middleware(TemporaryUnavailable)
 def view():
  raise AssertionError("don't call")
 response  = view(RequestFactory().get('/')
 assert response.status_code == 503
 }}}


 Of course, I could craft my own get_response, initiate the middleware and
 call `__call__` or `process_exception` directly but that is ugly and easy
 to get some details wrong, especially when the test involves exceptions.

--
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.9218f49fc03eb93a42c12ed5d39f2817%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2017-02-06 Thread Django
#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 Tim Graham):

 Absent a compelling use case for this update and due to some limitations
 in how effectively `decorator_from_middleware` can make the
 transformation, we decided not to move forward with this. A query about it
 has been raised
 
[https://www.reddit.com/r/django/comments/5s052v/decorator_from_middleware_doesnt_work_with_the/
 on Reddit]. I've asked if that poster can give a use case here.

--
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.84dda470f0b9c1fe43b1c8e9c6ab4bac%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Django] #26626: Update decorator_from_middleware to work with new-style middleware

2016-05-17 Thread Django
#26626: Update decorator_from_middleware to work with new-style middleware
---+
 Reporter:  timgraham  |Owner:  carljm
 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
---+
Changes (by carljm):

 * status:  new => assigned
 * owner:  nobody => carljm


--
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.ec7a85516fcacc742706ae52efa769f6%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


[Django] #26626: Update decorator_from_middleware to work with new-style middleware

2016-05-17 Thread Django
#26626: Update decorator_from_middleware to work with new-style middleware
-+
   Reporter:  timgraham  |  Owner:  nobody
   Type:  New feature| Status:  new
  Component:  HTTP handling  |Version:  master
   Severity:  Normal |   Keywords:
   Triage Stage:  Accepted   |  Has patch:  0
Needs documentation:  0  |Needs tests:  0
Patch needs improvement:  0  |  Easy pickings:  0
  UI/UX:  0  |
-+
 @carljm is working on it: "I did work on updating
 `decorator_from_middleware` yesterday and have an in-progress patch. I
 don't think we should plan on the patch for alpha (it's nontrivial and
 will need review), but if it's ok to do it as a follow-up cleanup fix for
 beta, then yeah I think it's be good to have it for 1.10.

--
Ticket URL: 
Django 
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.82a84cd6196e5042353425d5cb7da3e3%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.