<div dir="ltr"><div><div><div><div><div>I would definitely not recommend copying the current _method handling. :-)<br><br></div>The correct thing must be an early pass where the _method override is applied to the REQUEST_METHOD. All code beyond that point should just see REQUEST_METHOD, and never know the difference between fake and real HTTP verbs. Which sounds like exactly what tgext.routes 0.1.2 does.<br><br></div>(Aside: I did not look at the tgext.routes code, but I assume the override support is opt-in? Enabling it automatically for all applications could cause security issues for applications that don't have CSRF protection.)<br><br>> If I temporarily change that code so that 'DELETE' is also part of the<br>
> accepted request methods, then test_delete fails due to 403 Forbidden<br>
> while it expects 405 Method Not Allowed, and<br>
> test_delete_browser_fakeout fails with 403 too (CSRF protection, I<br>
> guess?)<br><br></div>Yes, and that behavior is arguably the correct one. test_delete should be changed to expect 403, since the DELETE method is in fact allowed (but the CSRF check is expected to fail).<br><br></div>Best,<br></div>Søren<br><div><div><div><br><br><div><br><br><br><br></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 11, 2016 at 12:42 AM, Alessandro Molina <span dir="ltr"><<a href="mailto:alessandro.molina@gmail.com" target="_blank">alessandro.molina@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sun, Apr 10, 2016 at 9:20 PM, Thomas De Schampheleire <span dir="ltr"><<a href="mailto:patrickdepinguin@gmail.com" target="_blank">patrickdepinguin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Previously, using routes, we received a real POST request with<br>
_method==PUT or _method==DELETE, while with Alessandro's change in<br>
tgext.routes, we receive a real PUT or DELETE request, which is not<br>
what the current code expects.<br></blockquote><div><br></div></span><div>We can easily change tgext.routes to behave like routes which recovers the previous REQUEST_METHOD -> <a href="https://github.com/bbangert/routes/blob/master/routes/middleware.py#L99" target="_blank">https://github.com/bbangert/routes/blob/master/routes/middleware.py#L99</a></div><div><br></div><div>but I think it actually makes more sense like this as I find it more confusing to have routing that behaves like a DELETE method but if you ask request method it gives something else.</div></div></div></div>
</blockquote></div><br></div>