github
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/datasette/issues/870#issuecomment-650815278 | https://api.github.com/repos/simonw/datasette/issues/870 | 650815278 | MDEyOklzc3VlQ29tbWVudDY1MDgxNTI3OA== | 9599 | 2020-06-28T20:09:07Z | 2020-06-28T20:11:21Z | OWNER | There's a lot of complex logic in the `DataView` class, which handles conditionally returning content as `.json` or as HTML or as `.csv`. That view subclasses `AsgiView` which is itself request-aware, so maybe I don't need to reconsider how those classes work - just figure out how to hook them up with `register_routes`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650818086 | https://api.github.com/repos/simonw/datasette/issues/870 | 650818086 | MDEyOklzc3VlQ29tbWVudDY1MDgxODA4Ng== | 9599 | 2020-06-28T20:34:33Z | 2020-06-28T20:34:33Z | OWNER | The key to all of this may be the `DatasetteRouter` class. It deals with `scope` right now but if it internally dealt with `request` that could be enough to fix #864 by adding logic needed by the `.add_message()` mechanism. https://github.com/simonw/datasette/blob/0991ea75cc7b265389aa8362414a305ba532d31a/datasette/app.py#L904-L938 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650818309 | https://api.github.com/repos/simonw/datasette/issues/870 | 650818309 | MDEyOklzc3VlQ29tbWVudDY1MDgxODMwOQ== | 9599 | 2020-06-28T20:36:28Z | 2020-06-28T20:36:52Z | OWNER | Since `AsgiRouter` is only used as the super-class of the `DatasetteRouter` class maybe I should get rid of `AsgiRouter` entirely - no point in having a Datasette-specific subclass of it if the parent class isn't ever used by anything else. I could also rename it to just `Router` which is a nicer name than `DatasetteRouter`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650820068 | https://api.github.com/repos/simonw/datasette/issues/870 | 650820068 | MDEyOklzc3VlQ29tbWVudDY1MDgyMDA2OA== | 9599 | 2020-06-28T20:52:09Z | 2020-06-28T20:53:00Z | OWNER | Maybe I could add a `as_request_view` method as an alternative to `as_asgi`: https://github.com/simonw/datasette/blob/a8bcafc1775c8a8655b365ae22a3d64f6361c74a/datasette/utils/asgi.py#L150-L174 Or I could teach the `Router` to spot the `dispatch_request` method and call it directly. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650834251 | https://api.github.com/repos/simonw/datasette/issues/870 | 650834251 | MDEyOklzc3VlQ29tbWVudDY1MDgzNDI1MQ== | 9599 | 2020-06-28T23:03:28Z | 2020-06-28T23:03:28Z | OWNER | I'm going to ditch that `AsgiView` class too, by combining it into `BaseView`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650834666 | https://api.github.com/repos/simonw/datasette/issues/870 | 650834666 | MDEyOklzc3VlQ29tbWVudDY1MDgzNDY2Ng== | 9599 | 2020-06-28T23:07:19Z | 2020-06-28T23:07:19Z | OWNER | So now the problem is simpler: I need to get `BaseView` to a state where it can accept a shared `request` object and it can be used in conjunction with `register_routes()`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650838691 | https://api.github.com/repos/simonw/datasette/issues/870 | 650838691 | MDEyOklzc3VlQ29tbWVudDY1MDgzODY5MQ== | 9599 | 2020-06-28T23:44:12Z | 2020-06-28T23:44:25Z | OWNER | This code is interesting: https://github.com/simonw/datasette/blob/3bc2461c77ecba3e1a95301dd440a9bef56b1283/datasette/app.py#L948-L955 I want to change the signature of that `return await view(new_scope, receive, send)` method to instead take `(request, send)` - so I can have a single shared request object that's created just once per HTTP request. The problem is the scope modification: I have code that modifies the scope, but how should that impact a shared `Request` instance? Should its `.scope` be replaced with alternative scopes as it travels through the codebase? | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 | |
https://github.com/simonw/datasette/issues/870#issuecomment-650838972 | https://api.github.com/repos/simonw/datasette/issues/870 | 650838972 | MDEyOklzc3VlQ29tbWVudDY1MDgzODk3Mg== | 9599 | 2020-06-28T23:46:40Z | 2020-06-28T23:46:40Z | OWNER | I'm going to create the single `Request()` instance in the `DatasetteRouter` class - at the beginning of the `route_path` method: https://github.com/simonw/datasette/blob/3bc2461c77ecba3e1a95301dd440a9bef56b1283/datasette/app.py#L905-L925 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
646737558 |