html_url,issue_url,id,node_id,user,user_label,created_at,updated_at,author_association,body,reactions,issue,issue_label,performed_via_github_app https://github.com/simonw/datasette/issues/880#issuecomment-691785692,https://api.github.com/repos/simonw/datasette/issues/880,691785692,MDEyOklzc3VlQ29tbWVudDY5MTc4NTY5Mg==,9599,simonw,2020-09-14T03:10:11Z,2020-09-14T03:10:11Z,OWNER,"Answer: no, it's [not safe](https://twitter.com/glenathan/status/1305081266065244162) to skip CSRF if there's an `Accept: application/json` header because of a nasty old `crossdomain.xml` Flash vulnerability: https://blog.appsecco.com/exploiting-csrf-on-json-endpoints-with-flash-and-redirects-681d4ad6b31b?gi=a5ee3d7a8235","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/880#issuecomment-692271804,https://api.github.com/repos/simonw/datasette/issues/880,692271804,MDEyOklzc3VlQ29tbWVudDY5MjI3MTgwNA==,9599,simonw,2020-09-14T19:41:37Z,2020-09-14T19:41:37Z,OWNER,Relevant code section: https://github.com/simonw/datasette/blob/1552ac931e4d2cf516caac3ceeab4fd24da1510a/datasette/views/database.py#L209-L232,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/880#issuecomment-692272860,https://api.github.com/repos/simonw/datasette/issues/880,692272860,MDEyOklzc3VlQ29tbWVudDY5MjI3Mjg2MA==,9599,simonw,2020-09-14T19:43:47Z,2020-09-14T19:43:47Z,OWNER,"I'm going to add support for POST content that is sent as a JSON document, in addition to the existing support for key=value encoded POST bodies.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/880#issuecomment-692298011,https://api.github.com/repos/simonw/datasette/issues/880,692298011,MDEyOklzc3VlQ29tbWVudDY5MjI5ODAxMQ==,9599,simonw,2020-09-14T20:33:13Z,2020-09-14T20:33:13Z,OWNER,"I'm going to support several ways of indicating that you would like a JSON response instead of getting a HTTP redirect from your writable canned query submission: - Use the `Accept: application/json` request header - Include `?_json=1` in the request query string - Include `""_json"": 1` in the form submission (or the JSON body submission)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/880#issuecomment-692299770,https://api.github.com/repos/simonw/datasette/issues/880,692299770,MDEyOklzc3VlQ29tbWVudDY5MjI5OTc3MA==,9599,simonw,2020-09-14T20:36:40Z,2020-09-14T20:36:40Z,OWNER,"The JSON response will look like this: ```json { ""ok"": true, ""message"": ""A message"", ""redirect"": ""/blah"" } ``` `""ok""` will be `true` if everything went right and `false` if there was an error. The `""message""` and `""redirect""` will be whatever was configured using the on_success_message - the message shown `on_success_message`, `on_success_redirect`, `on_error_message` and `on_error_redirect` settings, see https://docs.datasette.io/en/stable/sql_queries.html#writable-canned-queries","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/880#issuecomment-692324230,https://api.github.com/repos/simonw/datasette/issues/880,692324230,MDEyOklzc3VlQ29tbWVudDY5MjMyNDIzMA==,9599,simonw,2020-09-14T21:28:15Z,2020-09-14T21:28:21Z,OWNER,Documentation here: https://docs.datasette.io/en/latest/sql_queries.html#json-api-for-writable-canned-queries,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",648637666,POST to /db/canned-query that returns JSON should be supported (for API clients), https://github.com/simonw/datasette/issues/940#issuecomment-691779361,https://api.github.com/repos/simonw/datasette/issues/940,691779361,MDEyOklzc3VlQ29tbWVudDY5MTc3OTM2MQ==,9599,simonw,2020-09-14T02:45:04Z,2020-09-14T02:45:04Z,OWNER,"Package deploys are still broken, just got this error trying to ship 0.49a1: https://github.com/simonw/datasette/actions/runs/253099665 > The workflow is not valid. .github/workflows/publish.yml (Line: 61, Col: 9): Unexpected symbol: '""a""'. Located at position 24 within expression: !(contains(github.ref, ""a"") || contains(github.ref, ""b"")) ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-691779510,https://api.github.com/repos/simonw/datasette/issues/940,691779510,MDEyOklzc3VlQ29tbWVudDY5MTc3OTUxMA==,9599,simonw,2020-09-14T02:45:53Z,2020-09-14T02:45:53Z,OWNER,This bit here: https://github.com/simonw/datasette/blob/c18117cf08ad67c704dab29e3cb3b88f1de4026b/.github/workflows/publish.yml#L58-L62,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-691779693,https://api.github.com/repos/simonw/datasette/issues/940,691779693,MDEyOklzc3VlQ29tbWVudDY5MTc3OTY5Mw==,9599,simonw,2020-09-14T02:46:39Z,2020-09-14T02:46:39Z,OWNER,I think those should be single quoted.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-691781345,https://api.github.com/repos/simonw/datasette/issues/940,691781345,MDEyOklzc3VlQ29tbWVudDY5MTc4MTM0NQ==,9599,simonw,2020-09-14T02:53:25Z,2020-09-14T02:53:49Z,OWNER,"That worked: https://github.com/simonw/datasette/runs/1110040212?check_suite_focus=true ran and deployed https://pypi.org/project/datasette/0.49a1/ to PyPI but it skipped the push to Docker step because there was an ""a"" in the tag.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692331349,https://api.github.com/repos/simonw/datasette/issues/940,692331349,MDEyOklzc3VlQ29tbWVudDY5MjMzMTM0OQ==,9599,simonw,2020-09-14T21:46:11Z,2020-09-14T21:46:11Z,OWNER,"Just release Datasette 0.49 - which shipped to PyPI just fine but skipped the Docker step for some reason! https://github.com/simonw/datasette/runs/1114585275?check_suite_focus=true ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692331919,https://api.github.com/repos/simonw/datasette/issues/940,692331919,MDEyOklzc3VlQ29tbWVudDY5MjMzMTkxOQ==,9599,simonw,2020-09-14T21:47:39Z,2020-09-14T21:47:39Z,OWNER,"I bet that's because the `github.ref` actually looks like this: `${GITHUB_REF#refs/tags/}` And the `refs/tags/` part has an `a` in it.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692332430,https://api.github.com/repos/simonw/datasette/issues/940,692332430,MDEyOklzc3VlQ29tbWVudDY5MjMzMjQzMA==,9599,simonw,2020-09-14T21:48:59Z,2020-09-14T21:48:59Z,OWNER,"So now I've released Datasette 0.49 but failed to push a new Docker image. This is bad, and I need to fix it. I'd like to push to Docker from GitHub Actions, so I think I'm going to create a one-off workflow task for doing that.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692336564,https://api.github.com/repos/simonw/datasette/issues/940,692336564,MDEyOklzc3VlQ29tbWVudDY5MjMzNjU2NA==,9599,simonw,2020-09-14T21:59:40Z,2020-09-14T21:59:40Z,OWNER,Using https://github.com/marketplace/actions/debugging-with-tmate to manually submit a new build from within an interactive GitHub Actions session.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692337397,https://api.github.com/repos/simonw/datasette/issues/940,692337397,MDEyOklzc3VlQ29tbWVudDY5MjMzNzM5Nw==,9599,simonw,2020-09-14T22:01:56Z,2020-09-14T22:01:56Z,OWNER,"I'm going to switch to using this logic to decide if I should ship to Docker: https://github.community/t/release-prerelease-action-triggers/17275/2 if: ""!github.event.release.prerelease""","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692339645,https://api.github.com/repos/simonw/datasette/issues/940,692339645,MDEyOklzc3VlQ29tbWVudDY5MjMzOTY0NQ==,9599,simonw,2020-09-14T22:07:58Z,2020-09-14T22:07:58Z,OWNER,"I shipped the Docker build manually by running the following in a tmate session: docker login # Typed my username and password interactively export REPO=datasetteproject/datasette docker build -f Dockerfile -t $REPO:0.49 . docker tag $REPO:0.49 $REPO:latest docker push $REPO ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/940#issuecomment-692340275,https://api.github.com/repos/simonw/datasette/issues/940,692340275,MDEyOklzc3VlQ29tbWVudDY5MjM0MDI3NQ==,9599,simonw,2020-09-14T22:09:35Z,2020-09-14T22:09:35Z,OWNER,I'm going to cross my fingers and hope that this works - I don't want to leave this issue open until Datasette 0.50.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",679808124,Move CI to GitHub Issues, https://github.com/simonw/datasette/issues/944#issuecomment-691769222,https://api.github.com/repos/simonw/datasette/issues/944,691769222,MDEyOklzc3VlQ29tbWVudDY5MTc2OTIyMg==,9599,simonw,2020-09-14T02:01:33Z,2020-09-14T02:01:33Z,OWNER,I'm going to cache the `list_templates()` result in memory. If you want to add a new template-defined route you will need to restart the server. I think that's acceptable.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",681516976,Path parameters for custom pages, https://github.com/simonw/datasette/issues/944#issuecomment-691774262,https://api.github.com/repos/simonw/datasette/issues/944,691774262,MDEyOklzc3VlQ29tbWVudDY5MTc3NDI2Mg==,9599,simonw,2020-09-14T02:24:08Z,2020-09-14T02:24:08Z,OWNER,"Actually don't need `{{ raise_404(""Museum not found"") }}` because we already have `{{ custom_status(404) }}`.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",681516976,Path parameters for custom pages, https://github.com/simonw/datasette/issues/944#issuecomment-691788478,https://api.github.com/repos/simonw/datasette/issues/944,691788478,MDEyOklzc3VlQ29tbWVudDY5MTc4ODQ3OA==,9599,simonw,2020-09-14T03:21:45Z,2020-09-14T03:21:45Z,OWNER,Having tried this out I think it does need a `raise_404()` mechanism - which needs to be smart enough to trigger the default 404 handler without accidentally going into an infinite loop.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",681516976,Path parameters for custom pages, https://github.com/simonw/datasette/issues/964#issuecomment-692212641,https://api.github.com/repos/simonw/datasette/issues/964,692212641,MDEyOklzc3VlQ29tbWVudDY5MjIxMjY0MQ==,9599,simonw,2020-09-14T17:49:44Z,2020-09-14T17:49:44Z,OWNER,Documentation: https://docs.datasette.io/en/latest/custom_templates.html#returning-404s,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",700728217,raise_404 mechanism for custom templates, https://github.com/simonw/datasette/issues/965#issuecomment-692207341,https://api.github.com/repos/simonw/datasette/issues/965,692207341,MDEyOklzc3VlQ29tbWVudDY5MjIwNzM0MQ==,9599,simonw,2020-09-14T17:40:05Z,2020-09-14T17:40:05Z,OWNER,Also link to these from the docs added in #964.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",701294727,"Documentation for 404.html, 500.html templates", https://github.com/simonw/datasette/issues/965#issuecomment-692231257,https://api.github.com/repos/simonw/datasette/issues/965,692231257,MDEyOklzc3VlQ29tbWVudDY5MjIzMTI1Nw==,9599,simonw,2020-09-14T18:25:04Z,2020-09-14T18:25:04Z,OWNER,In documenting this I realized that it's confusing that the default `500.html` template is often used for non-500 errors (404 for example). I think I'll rename that default template to `error.html` instead.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",701294727,"Documentation for 404.html, 500.html templates", https://github.com/simonw/datasette/issues/965#issuecomment-692244252,https://api.github.com/repos/simonw/datasette/issues/965,692244252,MDEyOklzc3VlQ29tbWVudDY5MjI0NDI1Mg==,9599,simonw,2020-09-14T18:49:48Z,2020-09-14T18:49:48Z,OWNER,Documented here: https://docs.datasette.io/en/latest/custom_templates.html#custom-error-pages,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",701294727,"Documentation for 404.html, 500.html templates",