issue_comments
8,236 rows where user = 9599 sorted by updated_at descending
This data as json, CSV (advanced)
Suggested facets: reactions, created_at (date), updated_at (date)
user 1
- simonw · 8,236 ✖
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1484277416 | https://github.com/simonw/sqlite-utils/issues/388#issuecomment-1484277416 | https://api.github.com/repos/simonw/sqlite-utils/issues/388 | IC_kwDOCGYnMM5YeEao | simonw 9599 | 2023-03-26T23:43:12Z | 2023-03-26T23:43:12Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Link to stable docs from older versions 1114543475 | ||
1484276946 | https://github.com/simonw/datasette/issues/1608#issuecomment-1484276946 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c5YeETS | simonw 9599 | 2023-03-26T23:41:11Z | 2023-03-26T23:41:11Z | OWNER | It's working again now: https://docs.datasette.io/en/latest/sql_queries.html |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation should clarify /stable/ vs /latest/ 1109808154 | |
1484276302 | https://github.com/simonw/sqlite-utils/issues/388#issuecomment-1484276302 | https://api.github.com/repos/simonw/sqlite-utils/issues/388 | IC_kwDOCGYnMM5YeEJO | simonw 9599 | 2023-03-26T23:39:27Z | 2023-03-26T23:39:27Z | OWNER | Actually final Datasette fix was: ```html+jinja {% block scripts %} {{ super() }} <script> document.addEventListener("DOMContentLoaded", function() { // Show banner linking to /stable/ if this is a /latest/ page if (!/\/latest\//.test(location.pathname)) { return; } var stableUrl = location.pathname.replace("/latest/", "/stable/"); // Check it's not a 404 fetch(stableUrl, { method: "HEAD" }).then((response) => { if (response.status === 200) { var warning = document.createElement("div"); warning.className = "admonition warning"; warning.innerHTML = `Note This documentation covers the development version of Datasette. See this page for the current stable release. `; var mainArticle = document.querySelector("article[role=main]"); mainArticle.insertBefore(warning, mainArticle.firstChild); } }); }); </script>{% endblock %} ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Link to stable docs from older versions 1114543475 | |
1484274796 | https://github.com/simonw/datasette/issues/1608#issuecomment-1484274796 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c5YeDxs | simonw 9599 | 2023-03-26T23:38:18Z | 2023-03-26T23:38:18Z | OWNER | ChatGPT prompt:
Got back:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation should clarify /stable/ vs /latest/ 1109808154 | |
1484272313 | https://github.com/simonw/datasette/issues/1608#issuecomment-1484272313 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c5YeDK5 | simonw 9599 | 2023-03-26T23:36:17Z | 2023-03-26T23:36:17Z | OWNER | Still getting this error: Weird because |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation should clarify /stable/ vs /latest/ 1109808154 | |
1484269326 | https://github.com/simonw/sqlite-utils/issues/388#issuecomment-1484269326 | https://api.github.com/repos/simonw/sqlite-utils/issues/388 | IC_kwDOCGYnMM5YeCcO | simonw 9599 | 2023-03-26T23:24:12Z | 2023-03-26T23:28:14Z | OWNER | This broke on the upgrade to Furo. I fixed it in Datasette like this: https://github.com/simonw/datasette/commit/5c1cfa451d78e3935193f5e10eba59bf741241a1 and https://github.com/simonw/datasette/commit/db8cf899e286fbaa0a40f3a9ae8d5aaa1478822e |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Link to stable docs from older versions 1114543475 | |
1484270067 | https://github.com/simonw/datasette/issues/1608#issuecomment-1484270067 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c5YeCnz | simonw 9599 | 2023-03-26T23:26:10Z | 2023-03-26T23:27:42Z | OWNER | That didn't work, because I should use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation should clarify /stable/ vs /latest/ 1109808154 | |
1484268146 | https://github.com/simonw/datasette/issues/1608#issuecomment-1484268146 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c5YeCJy | simonw 9599 | 2023-03-26T23:23:22Z | 2023-03-26T23:23:22Z | OWNER | This broke when I upgraded to the Furo theme. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation should clarify /stable/ vs /latest/ 1109808154 | |
1480355670 | https://github.com/simonw/datasette/issues/262#issuecomment-1480355670 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5YPG9W | simonw 9599 | 2023-03-22T22:50:30Z | 2023-03-22T22:50:30Z | OWNER | I just landed this PR so this feature is now in Still needs documentation and maybe some extra tests too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1480343044 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480343044 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YPD4E | simonw 9599 | 2023-03-22T22:33:15Z | 2023-03-22T22:33:15Z | OWNER | This still needs documentation, but now the tests are passing I'm going to merge it into |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1480339527 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480339527 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YPDBH | simonw 9599 | 2023-03-22T22:28:54Z | 2023-03-22T22:28:54Z | OWNER | I hacked at the CSV stuff until it worked. I need to clean it up though, but I can do that in this separate task: - #1101 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1480299765 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480299765 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YO5T1 | simonw 9599 | 2023-03-22T21:44:03Z | 2023-03-22T21:45:10Z | OWNER | Oh this is a bit tricky. I have a failing test because a plugin that uses the Turns out that bit comes from here: Which assumes the context has Actually I think I can cheat here, since it's still getting the HTML context in order to render the template. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1480179217 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480179217 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YOb4R | simonw 9599 | 2023-03-22T19:55:31Z | 2023-03-22T21:34:02Z | OWNER | I rebased from
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1480163485 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480163485 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YOYCd | simonw 9599 | 2023-03-22T19:48:00Z | 2023-03-22T19:48:00Z | OWNER | Getting close now! Only 13 failures left, mostly relating to CSV.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1480154453 | https://github.com/simonw/datasette/pull/1999#issuecomment-1480154453 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YOV1V | simonw 9599 | 2023-03-22T19:41:39Z | 2023-03-22T19:43:04Z | OWNER | To replace this code: https://github.com/simonw/datasette/blob/56b0758a5fbf85d01ff80a40c9b028469d7bb65f/datasette/views/base.py#L110-L122 Maybe https://docs.datasette.io/en/stable/internals.html#await-render-template-template-context-none-request-none - turns out it does already:
It doesn't have an easy way to populate that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1477155602 | https://github.com/simonw/datasette/issues/2041#issuecomment-1477155602 | https://api.github.com/repos/simonw/datasette/issues/2041 | IC_kwDOBm6k_c5YC5sS | simonw 9599 | 2023-03-21T01:17:43Z | 2023-03-21T01:17:43Z | OWNER | Removed code in https://github.com/simonw/datasette/commit/538ca9d2e2d41308f5b149c934e2bc43727fd77c - it will merge when I land: - #1999 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove obsolete table POST code 1633077183 | |
1477144853 | https://github.com/simonw/datasette/issues/2041#issuecomment-1477144853 | https://api.github.com/repos/simonw/datasette/issues/2041 | IC_kwDOBm6k_c5YC3EV | simonw 9599 | 2023-03-21T01:02:13Z | 2023-03-21T01:02:13Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove obsolete table POST code 1633077183 | ||
1477082852 | https://github.com/simonw/datasette/pull/1999#issuecomment-1477082852 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YCn7k | simonw 9599 | 2023-03-20T23:27:25Z | 2023-03-20T23:27:25Z | OWNER | Urgh getting CSV to work is going to be so hard, because the logic for that currently lives in a huge chunk of code in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1476860334 | https://github.com/simonw/datasette/pull/1999#issuecomment-1476860334 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YBxmu | simonw 9599 | 2023-03-20T20:06:56Z | 2023-03-20T22:09:03Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1476898261 | https://github.com/simonw/datasette/pull/1999#issuecomment-1476898261 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YB63V | simonw 9599 | 2023-03-20T20:37:52Z | 2023-03-20T20:37:52Z | OWNER | Manual testing spotted a bug.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1476854645 | https://github.com/simonw/datasette/pull/1999#issuecomment-1476854645 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YBwN1 | simonw 9599 | 2023-03-20T20:02:24Z | 2023-03-20T20:02:24Z | OWNER | ``` def test_routes(routes, path, expected_class, expected_matches): match, view = resolve_routes(routes, path) if expected_class is None: assert match is None else:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1476851525 | https://github.com/simonw/datasette/pull/1999#issuecomment-1476851525 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YBvdF | simonw 9599 | 2023-03-20T19:59:51Z | 2023-03-20T20:01:40Z | OWNER | Three failures in In CI I'm getting this: https://github.com/simonw/datasette/actions/runs/4472331872/jobs/7858360154
Including failures in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1476781401 | https://github.com/simonw/datasette/pull/1999#issuecomment-1476781401 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5YBeVZ | simonw 9599 | 2023-03-20T19:01:35Z | 2023-03-20T19:01:35Z | OWNER | Down to just these failures:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460759358 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460759358 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XEWs- | simonw 9599 | 2023-03-08T19:48:13Z | 2023-03-20T18:47:12Z | OWNER | Breaking this down into smaller steps:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1475074311 | https://github.com/simonw/datasette/pull/1999#issuecomment-1475074311 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5X69kH | simonw 9599 | 2023-03-19T02:16:08Z | 2023-03-19T02:17:33Z | OWNER | Next big challenge: fix all the tests in
Deduped that's 30 tests:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1475074025 | https://github.com/simonw/datasette/pull/1999#issuecomment-1475074025 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5X69fp | simonw 9599 | 2023-03-19T02:14:28Z | 2023-03-19T02:14:51Z | OWNER | I had to replicate quite a bit of this logic from I should refactor this when I move the canned / arbitrary query views away from that base class too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1475016834 | https://github.com/simonw/datasette/pull/1999#issuecomment-1475016834 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5X6viC | simonw 9599 | 2023-03-18T22:30:31Z | 2023-03-18T22:30:31Z | OWNER |
The reason the tests are failing is that But I can only rely on I thought I could maybe assemble the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1475003292 | https://github.com/simonw/datasette/pull/1999#issuecomment-1475003292 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5X6sOc | simonw 9599 | 2023-03-18T21:46:20Z | 2023-03-18T21:46:20Z | OWNER | Now 25 failures in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1474704790 | https://github.com/simonw/datasette/pull/1999#issuecomment-1474704790 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5X5jWW | simonw 9599 | 2023-03-18T04:52:59Z | 2023-03-18T04:52:59Z | OWNER | Here are the next set of tests to get passing:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1465303378 | https://github.com/simonw/sqlite-utils/issues/533#issuecomment-1465303378 | https://api.github.com/repos/simonw/sqlite-utils/issues/533 | IC_kwDOCGYnMM5XVsFS | simonw 9599 | 2023-03-12T21:24:04Z | 2023-03-12T21:24:04Z | OWNER | Upgraded to Sphinx 6 locally and got the same error:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
ReadTheDocs error: not all arguments converted during string formatting 1620516340 | |
1465302936 | https://github.com/simonw/sqlite-utils/issues/533#issuecomment-1465302936 | https://api.github.com/repos/simonw/sqlite-utils/issues/533 | IC_kwDOCGYnMM5XVr-Y | simonw 9599 | 2023-03-12T21:22:09Z | 2023-03-12T21:22:09Z | OWNER | Could be the same problem as: - https://github.com/simonw/datasette/issues/1972 Which I fixed in https://github.com/simonw/datasette/commit/3af313e165215696af899e772f47bf7c27873ae3 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
ReadTheDocs error: not all arguments converted during string formatting 1620516340 | |
1465302343 | https://github.com/simonw/sqlite-utils/pull/531#issuecomment-1465302343 | https://api.github.com/repos/simonw/sqlite-utils/issues/531 | IC_kwDOCGYnMM5XVr1H | simonw 9599 | 2023-03-12T21:19:13Z | 2023-03-12T21:19:13Z | OWNER | Aah, I think I see why you wrote it like that. The problem is that So it needs to be able to load the SpatiaLite extension from the correct place, and THEN run So the problem you're trying to solve here is to let people optionally pass in the path to SpatiaLite if it's not one of the ones that are searched by default. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add paths for homebrew on Apple silicon 1620164673 | |
1463113856 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463113856 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XNViA | simonw 9599 | 2023-03-10T02:13:15Z | 2023-03-10T02:13:15Z | OWNER | Idea for if this change ends up making a bunch of breaking changes to the templates (which I think it should) - I can generate a GitHub diff link between the old and new templates and include that link in the 1.0 upgrade documentation to help people who wrote custom templates see what they might need to change - with minimal effort from myself to document those changes. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1463112173 | https://github.com/simonw/datasette/issues/2038#issuecomment-1463112173 | https://api.github.com/repos/simonw/datasette/issues/2038 | IC_kwDOBm6k_c5XNVHt | simonw 9599 | 2023-03-10T02:11:06Z | 2023-03-10T02:11:06Z | OWNER | Here's an example of something that would break: Because |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a `strict_templates` setting 1618249044 | |
1463110978 | https://github.com/simonw/datasette/issues/2038#issuecomment-1463110978 | https://api.github.com/repos/simonw/datasette/issues/2038 | IC_kwDOBm6k_c5XNU1C | simonw 9599 | 2023-03-10T02:09:41Z | 2023-03-10T02:09:41Z | OWNER | I'm torn on this. It's useful for me right now for refactoring, but I feel like it should be a permanent thing, not a setting - or it should default to on and people should turn it off, but who would ever do that? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a `strict_templates` setting 1618249044 | |
1463024951 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463024951 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM_03 | simonw 9599 | 2023-03-10T00:17:58Z | 2023-03-10T00:17:58Z | OWNER | Renderers have an impact on three different pages: query results, table page and row page. The row page feature is incomplete though: https://congress-legislators.datasettes.com/legislators/social_media/A000055 Why is there no |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1463023674 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463023674 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM_g6 | simonw 9599 | 2023-03-10T00:16:03Z | 2023-03-10T00:16:03Z | OWNER | I also need to figure out the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1463022397 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463022397 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM_M9 | simonw 9599 | 2023-03-10T00:14:21Z | 2023-03-10T00:14:21Z | OWNER | Ironically the thing I most need right now is comprehensive documentation of what variables are being passed to the templates! One big challenge is that I need to untangle the template context that happens in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1463021383 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463021383 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM-9H | simonw 9599 | 2023-03-10T00:12:50Z | 2023-03-10T00:12:50Z | OWNER | Now at 34 failed, 34 passed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1463005744 | https://github.com/simonw/datasette/pull/1999#issuecomment-1463005744 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM7Iw | simonw 9599 | 2023-03-09T23:52:15Z | 2023-03-09T23:52:23Z | OWNER | I need to figure out what to do about |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1462997800 | https://github.com/simonw/datasette/pull/1999#issuecomment-1462997800 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XM5Mo | simonw 9599 | 2023-03-09T23:39:47Z | 2023-03-09T23:39:47Z | OWNER | Found a neat trick: ```diff diff --git a/datasette/app.py b/datasette/app.py index 186f192d..40416713 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -23,7 +23,13 @@ from pathlib import Path from markupsafe import Markup, escape from itsdangerous import URLSafeSerializer -from jinja2 import ChoiceLoader, Environment, FileSystemLoader, PrefixLoader +from jinja2 import ( + ChoiceLoader, + Environment, + FileSystemLoader, + PrefixLoader, + StrictUndefined, +) from jinja2.environment import Template from jinja2.exceptions import TemplateNotFound @@ -394,7 +400,10 @@ class Datasette: ] ) self.jinja_env = Environment( - loader=template_loader, autoescape=True, enable_async=True + loader=template_loader, + autoescape=True, + enable_async=True, + undefined=StrictUndefined, ) self.jinja_env.filters["escape_css_string"] = escape_css_string self.jinja_env.filters["quote_plus"] = urllib.parse.quote_plus ``` This causes Jinja to raise a hard error if there are any variables referenced in the template that are not available in the context. It's helping me spot things that are still missing, rather than just relying on failed unit tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1462968053 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/11#issuecomment-1462968053 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/11 | IC_kwDOJHON9s5XMx71 | simonw 9599 | 2023-03-09T23:24:01Z | 2023-03-09T23:24:01Z | MEMBER | I improved the readability by removing some unnecessary table aliases:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Implement a SQL view to make it easier to query files in a nested folder 1618130434 | |
1462962682 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/11#issuecomment-1462962682 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/11 | IC_kwDOJHON9s5XMwn6 | simonw 9599 | 2023-03-09T23:20:35Z | 2023-03-09T23:22:41Z | MEMBER | Here's a query that returns all notes in folder 1, including notes in descendant folders:
``` SQLite schema: CREATE TABLE [folders] ( [id] INTEGER PRIMARY KEY, [long_id] TEXT, [name] TEXT, [parent] INTEGER, FOREIGN KEY([parent]) REFERENCES folders ); Write a recursive CTE that returns the following: folder_id | descendant_folder_id With a row for every nested child of every folder - so the top level folder has lots of rows
Convert all SQL keywords to lower case, and re-indent ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Implement a SQL view to make it easier to query files in a nested folder 1618130434 | |
1462965256 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/11#issuecomment-1462965256 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/11 | IC_kwDOJHON9s5XMxQI | simonw 9599 | 2023-03-09T23:22:12Z | 2023-03-09T23:22:12Z | MEMBER | Here's what the CTE from that looks like: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Implement a SQL view to make it easier to query files in a nested folder 1618130434 | |
1462921890 | https://github.com/simonw/datasette/pull/2031#issuecomment-1462921890 | https://api.github.com/repos/simonw/datasette/issues/2031 | IC_kwDOBm6k_c5XMmqi | simonw 9599 | 2023-03-09T22:35:30Z | 2023-03-09T22:35:30Z | OWNER |
Sure, let's merge that one too - it can go out in the next |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand foreign key references in row view as well 1605481359 | |
1462921010 | https://github.com/simonw/datasette/pull/2034#issuecomment-1462921010 | https://api.github.com/repos/simonw/datasette/issues/2034 | IC_kwDOBm6k_c5XMmcy | simonw 9599 | 2023-03-09T22:34:29Z | 2023-03-09T22:34:29Z | OWNER | Good catch, thanks. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
remove an unused `app` var in cli.py 1613974869 | |
1462693867 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462693867 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLu_r | simonw 9599 | 2023-03-09T20:01:39Z | 2023-03-09T20:02:11Z | MEMBER | My
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462691466 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462691466 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLuaK | simonw 9599 | 2023-03-09T19:59:52Z | 2023-03-09T19:59:52Z | MEMBER | Improved script:
ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p698 Name: JSK Container: ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p7995 Name: Nested inside blog posts Container: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p6113 ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p3526 Name: New Folder Container: ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p3839 Name: New Folder 1 Container: ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p2 Name: Notes Container: ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p6059 Name: Quick Notes Container: ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p7283
Name: UK Christmas 2022
Container:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462682795 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462682795 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLsSr | simonw 9599 | 2023-03-09T19:52:20Z | 2023-03-09T19:52:44Z | MEMBER | Created through several rounds with ChatGPT (including hints like "rewrite that using setdefault()"): ```python def topological_sort(nodes): children = {} for node in nodes: parent_id = node["parent"] if parent_id is not None: children.setdefault(parent_id, []).append(node)
``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462570187 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462570187 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLQzL | simonw 9599 | 2023-03-09T18:30:24Z | 2023-03-09T18:30:24Z | MEMBER | I used ChatGPT to write this:
Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p698 Folder Name: JSK Folder Container: iCloud Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p7995 Folder Name: Nested inside blog posts Folder Container: Blog posts Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p3526 Folder Name: New Folder Folder Container: iCloud Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p3839 Folder Name: New Folder 1 Folder Container: iCloud Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p2 Folder Name: Notes Folder Container: iCloud Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p6059 Folder Name: Quick Notes Folder Container: iCloud Folder ID: x-coredata://D2D50498-BBD1-4097-B122-D15ABD32BDEC/ICFolder/p7283 Folder Name: UK Christmas 2022 Folder Container: iCloud ``` So I think the correct approach here is to run code at the start to list all of the folders (no need to do fancy recursion though, just a flat list with the parent containers is enough) and create a model of that hierarchy in SQLite. Then when I import notes I can foreign key reference them back to their containing folder. I'm tempted to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462564717 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462564717 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLPdt | simonw 9599 | 2023-03-09T18:25:39Z | 2023-03-09T18:25:39Z | MEMBER | So it looks like folders can be hierarchical? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462562735 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/7#issuecomment-1462562735 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/7 | IC_kwDOJHON9s5XLO-v | simonw 9599 | 2023-03-09T18:23:56Z | 2023-03-09T18:25:22Z | MEMBER | From the Script Editor library docs: A note has a:
Here's what a folder looks like:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Folder support 1617769847 | |
1462556829 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/4#issuecomment-1462556829 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/4 | IC_kwDOJHON9s5XLNid | simonw 9599 | 2023-03-09T18:20:56Z | 2023-03-09T18:20:56Z | MEMBER | In terms of the UI: I'm tempted to say that the default behaviour is for it to run until it sees a note that it already knows about AND that has matching update/created dates, and then stop. You can do a full import again ignoring that logic with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support incremental updates 1616429236 | |
1462554175 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/4#issuecomment-1462554175 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/4 | IC_kwDOJHON9s5XLM4_ | simonw 9599 | 2023-03-09T18:19:34Z | 2023-03-09T18:19:34Z | MEMBER | It looks like the iteration order is most-recently-modified-first - I tried editing a note a bit further back in my notes app and it was the first one output by |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support incremental updates 1616429236 | |
1461285545 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461285545 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGXKp | simonw 9599 | 2023-03-09T05:06:24Z | 2023-03-09T05:06:24Z | MEMBER | OK, this works! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461262577 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461262577 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGRjx | simonw 9599 | 2023-03-09T04:30:00Z | 2023-03-09T04:30:00Z | MEMBER | It doesn't have tests yet. I guess I'll need to mock |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461260978 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461260978 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGRKy | simonw 9599 | 2023-03-09T04:27:18Z | 2023-03-09T04:27:18Z | MEMBER | Before that conversion:
After:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461259490 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461259490 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGQzi | simonw 9599 | 2023-03-09T04:24:27Z | 2023-03-09T04:24:27Z | MEMBER | Converting AppleScript date strings to ISO format is hard! https://forum.latenightsw.com/t/formatting-dates/841 has a recipe I'll try:
Not clear to me how timezones work here. I'm going to ignore them for the moment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461234591 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461234591 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGKuf | simonw 9599 | 2023-03-09T03:56:45Z | 2023-03-09T03:56:45Z | MEMBER | My prototype showed that images embedded in notes come out in the HTML export as bas64 image URLs, which is neat. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461234311 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461234311 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGKqH | simonw 9599 | 2023-03-09T03:56:24Z | 2023-03-09T03:56:24Z | MEMBER | I opened the "Script Editor" app on my computer, used Window -> Library to open the Library panel, then clicked on the Notes app there. I got this: So the notes object has these properties:
I'm going to ignore the concept of attachments for the moment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461232709 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/2#issuecomment-1461232709 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/2 | IC_kwDOJHON9s5XGKRF | simonw 9599 | 2023-03-09T03:54:28Z | 2023-03-09T03:54:28Z | MEMBER | I think the AppleScript I want to pass to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
First working version 1616354999 | |
1461230436 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/1#issuecomment-1461230436 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/1 | IC_kwDOJHON9s5XGJtk | simonw 9599 | 2023-03-09T03:51:52Z | 2023-03-09T03:51:52Z | MEMBER | This did the job! Next step is to turn that into a Python script. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Initial proof of concept with ChatGPT 1616347574 | |
1461230197 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/1#issuecomment-1461230197 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/1 | IC_kwDOJHON9s5XGJp1 | simonw 9599 | 2023-03-09T03:51:36Z | 2023-03-09T03:51:36Z | MEMBER | After a few more rounds I got to this script, which outputs them to a ```zsh !/bin/zshosascript -e '
set notesFile to "/tmp/notes.txt"
set fileRef to open for access notesFile with write permission
tell application "Notes"
repeat with eachNote in every note
set noteId to the id of eachNote
set noteTitle to the name of eachNote
set noteBody to the body of eachNote
write "------------------------" & "\n" to fileRef
write noteId & "\n" to fileRef
write noteTitle & "\n\n" to fileRef
write noteBody & "\n" to fileRef
end repeat
end tell
close access fileRef'
cleaned_notes = [{ "id": n.split("\n")[0], "title": n.split("\n")[1], "body": "\n".join(n.split("\n")[2:]).strip() } for n in notes] db = sqlite_utils.Database("/tmp/notes.db") db["notes"].insert_all(cleaned_notes) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Initial proof of concept with ChatGPT 1616347574 | |
1461226402 | https://github.com/dogsheep/apple-notes-to-sqlite/issues/1#issuecomment-1461226402 | https://api.github.com/repos/dogsheep/apple-notes-to-sqlite/issues/1 | IC_kwDOJHON9s5XGIui | simonw 9599 | 2023-03-09T03:47:11Z | 2023-03-09T03:47:11Z | MEMBER | Me:
ChatGPT:
ChatGPT: ```zsh !/usr/bin/zshosascript -e 'tell application "Notes"
repeat with eachNote in every note
set noteTitle to the name of eachNote
set noteBody to the body of eachNote
set output to noteTitle & "\n" & noteBody & "\n"
display dialog output
log output
end repeat
end tell'
Me:
ChatGPT: ```zsh !/bin/zshosascript -e 'tell application "Notes" repeat with eachNote in every note set noteTitle to the name of eachNote set noteBody to the body of eachNote set output to noteTitle & "\n" & noteBody & "\n" log output end repeat end tell' ``` This really helps! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Initial proof of concept with ChatGPT 1616347574 | |
1461161256 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461161256 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XF40o | simonw 9599 | 2023-03-09T02:10:07Z | 2023-03-09T02:10:07Z | OWNER | Just ran into a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461148579 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461148579 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XF1uj | simonw 9599 | 2023-03-09T01:54:10Z | 2023-03-09T01:55:33Z | OWNER | Or... I could temporarily build a quick additional |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461148254 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461148254 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XF1pe | simonw 9599 | 2023-03-09T01:53:41Z | 2023-03-09T01:53:41Z | OWNER | Solving this is proving difficult: https://github.com/simonw/datasette/blob/96e94f9b7b2db53865e61390bcce6761727f26d8/datasette/views/table.py#L1500-L1503 The problem is that calling So I may need to substantially re-engineer how |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461075648 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461075648 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFj7A | simonw 9599 | 2023-03-09T00:24:22Z | 2023-03-09T00:24:22Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461074526 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461074526 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFjpe | simonw 9599 | 2023-03-09T00:23:06Z | 2023-03-09T00:23:06Z | OWNER |
Currently 44 failed, 24 passed in 7.53s Failures here: https://gist.github.com/simonw/df0a52cd7d820b776dc3dfc50e7cb778 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461070937 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461070937 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFixZ | simonw 9599 | 2023-03-09T00:18:52Z | 2023-03-09T00:19:36Z | OWNER | I managed to get HTML view working! I did it by continuing to add more things to the extras and the ```diff async def extra_extras(): "Available ?_extra= blocks" return { @@ -1981,6 +2053,14 @@ async def extra_extras(): "query", "display_columns", "display_rows", + "database", + "table", + "database_color", + "table_actions", + "filters", + "renderers", + "custom_table_templates", + "sorted_facet_results", ] } @@ -2006,6 +2086,14 @@ async def extra_extras():
extra_query,
extra_metadata,
extra_extras,
+ extra_database,
+ extra_table,
+ extra_database_color,
+ extra_table_actions,
+ extra_filters,
+ extra_renderers,
+ extra_custom_table_templates,
+ extra_sorted_facet_results,
)
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461047607 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461047607 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFdE3 | simonw 9599 | 2023-03-08T23:51:46Z | 2023-03-08T23:51:46Z | OWNER | This feels quite nice: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461044477 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461044477 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFcT9 | simonw 9599 | 2023-03-08T23:47:26Z | 2023-03-08T23:47:26Z | OWNER | I want to package together all of the extras that are needed for the HTML format. A few options for doing that:
I'm leaning towards the first option. I'll try that and see what it looks like. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461023559 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461023559 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFXNH | simonw 9599 | 2023-03-08T23:23:02Z | 2023-03-08T23:23:02Z | OWNER | To get this unblocked, I'm going to allow myself to pass non-JSON-serializable objects to the HTML template version of things. If I can get that working (and get the existing tests to pass) I can consider a later change that makes those JSON serializable - or admit that it's OK for the templates to have non-JSON data passed to them and figure out how best to document those variables independently from the JSON documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1461002039 | https://github.com/simonw/datasette/pull/1999#issuecomment-1461002039 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFR83 | simonw 9599 | 2023-03-08T22:58:16Z | 2023-03-08T23:02:09Z | OWNER | The reason for that https://docs.datasette.io/en/stable/changelog.html#easier-custom-templates-for-table-rows
It's documented here: https://docs.datasette.io/en/0.64.2/custom_templates.html#custom-templates
I can't see any examples of anyone using it in this code search: https://cs.github.com/?scopeName=All+repos&scope=&q=datasette+row.display It is however useful to have some kind of abstraction layer here that insulates the SQLite |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460988975 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460988975 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFOwv | simonw 9599 | 2023-03-08T22:42:57Z | 2023-03-08T22:42:57Z | OWNER | Aside idea: it might be interesting if there were "lazy" template variables available in the context: things that are not actually executed unless a template author requests them. Imagine if |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460986533 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460986533 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFOKl | simonw 9599 | 2023-03-08T22:40:28Z | 2023-03-08T22:40:28Z | OWNER | Figuring out what to do with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460970807 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460970807 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFKU3 | simonw 9599 | 2023-03-08T22:31:49Z | 2023-03-08T22:33:03Z | OWNER | For the HTML version, I need to decide where all of the stuff that happens in I think it's another one of those extra functions, triggered for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460943097 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460943097 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XFDj5 | simonw 9599 | 2023-03-08T22:09:24Z | 2023-03-08T22:09:47Z | OWNER | The ease with which I added that ```diff diff --git a/datasette/views/table.py b/datasette/views/table.py index 8d3bb2c930..3e1db9c85f 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -1913,6 +1913,13 @@ async def extra_request(): "args": request.args._data, }
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460916405 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460916405 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XE9C1 | simonw 9599 | 2023-03-08T21:43:27Z | 2023-03-08T21:43:27Z | OWNER | Just noticed that But that's not currently being called by my new code. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460907148 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460907148 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XE6yM | simonw 9599 | 2023-03-08T21:34:30Z | 2023-03-08T21:34:30Z | OWNER | I'm going to hold off on that refactor until later, when I have tests to show me if the refactor works or not. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460906741 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460906741 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XE6r1 | simonw 9599 | 2023-03-08T21:34:08Z | 2023-03-08T21:34:08Z | OWNER | So maybe I can refactor it to look a bit more like this: One thing that's useful here is that So if I omit the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460905469 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460905469 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XE6X9 | simonw 9599 | 2023-03-08T21:32:56Z | 2023-03-08T21:32:56Z | OWNER | I'd really like to extract this ugly logic out into a helper function: I copied it in and asked ChatGPT to "List all of the variable that are either modified or assigned to by the above code":
Then I asked which variables were used as inputs, and argued with it a bit about whether it should be counting functions. Eventually got to this:
Note that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460866243 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460866243 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEwzD | simonw 9599 | 2023-03-08T20:57:34Z | 2023-03-08T20:57:34Z | OWNER | This fix is released in 0.64.2 https://docs.datasette.io/en/stable/changelog.html#v0-64-2 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460848869 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460848869 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEsjl | simonw 9599 | 2023-03-08T20:40:55Z | 2023-03-08T20:40:55Z | OWNER | Here's the https://latest.datasette.io/ deployment that just went out, further demonstrating that this change is working correctly: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460840620 | https://github.com/simonw/datasette/issues/2037#issuecomment-1460840620 | https://api.github.com/repos/simonw/datasette/issues/2037 | IC_kwDOBm6k_c5XEqis | simonw 9599 | 2023-03-08T20:33:00Z | 2023-03-08T20:33:00Z | OWNER | Got the same failure again for a recent commit: https://github.com/simonw/datasette/actions/runs/4368239376/jobs/7640567282 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failure: FAILED tests/test_cli.py::test_install_requirements - FileNotFoundError 1615891776 | |
1460838797 | https://github.com/simonw/datasette/issues/2037#issuecomment-1460838797 | https://api.github.com/repos/simonw/datasette/issues/2037 | IC_kwDOBm6k_c5XEqGN | simonw 9599 | 2023-03-08T20:31:15Z | 2023-03-08T20:31:15Z | OWNER | It's this test here: Added in: - #2033 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failure: FAILED tests/test_cli.py::test_install_requirements - FileNotFoundError 1615891776 | |
1460838109 | https://github.com/simonw/datasette/issues/2037#issuecomment-1460838109 | https://api.github.com/repos/simonw/datasette/issues/2037 | IC_kwDOBm6k_c5XEp7d | simonw 9599 | 2023-03-08T20:30:36Z | 2023-03-08T20:30:36Z | OWNER | Instead of using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failure: FAILED tests/test_cli.py::test_install_requirements - FileNotFoundError 1615891776 | |
1460827178 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460827178 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEnQq | simonw 9599 | 2023-03-08T20:25:10Z | 2023-03-08T20:25:10Z | OWNER | https://console.cloud.google.com/run/detail/us-central1/new-service/revisions?project=datasette-222320 confirms that the image deployed is: Compared to https://console.cloud.google.com/run/detail/us-central1/datasette-io/revisions?project=datasette-222320 which shows that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460816528 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460816528 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEkqQ | simonw 9599 | 2023-03-08T20:22:50Z | 2023-03-08T20:23:20Z | OWNER | Testing this manually: ``` % datasette publish cloudrun content.db --service new-service Creating temporary tarball archive of 2 file(s) totalling 13.8 MiB before compression. Uploading tarball of [.] to [gs://datasette-222320_cloudbuild/source/1678306859.271661-805303f364144b6094cc9c8532ab5133.tgz] Created [https://cloudbuild.googleapis.com/v1/projects/datasette-222320/locations/global/builds/290f41a4-e29a-443c-a1e5-c54513c6143d]. Logs are available at [ https://console.cloud.google.com/cloud-build/builds/290f41a4-e29a-443c-a1e5-c54513c6143d?project=99025868001 ]. ---- REMOTE BUILD OUTPUT ---- starting build "290f41a4-e29a-443c-a1e5-c54513c6143d" FETCHSOURCE
Fetching storage object: gs://datasette-222320_cloudbuild/source/1678306859.271661-805303f364144b6094cc9c8532ab5133.tgz#1678306862810483
Copying gs://datasette-222320_cloudbuild/source/1678306859.271661-805303f364144b6094cc9c8532ab5133.tgz#1678306862810483...
/ [1 files][ 3.9 MiB/ 3.9 MiB] [notice] A new release of pip available: 22.3 -> 23.0.1 [notice] To update, run: pip install --upgrade pip Removing intermediate container 8ccebfebebc9 ---> b972c85b38bb ... Successfully built 606b7c286d7f Successfully tagged gcr.io/datasette-222320/datasette-new-service:latest PUSH Pushing gcr.io/datasette-222320/datasette-new-service The push refers to repository [gcr.io/datasette-222320/datasette-new-service] 667b1dc69e5e: Preparing ... d8ddfcff216f: Pushed latest: digest: sha256:452daffb2d3d7a8579c2ab39854be285155252c9428b4c1c50caac6a3a269e3f size: 2004 DONE ID CREATE_TIME DURATION SOURCE IMAGES STATUS
290f41a4-e29a-443c-a1e5-c54513c6143d 2023-03-08T20:21:03+00:00 39S gs://datasette-222320_cloudbuild/source/1678306859.271661-805303f364144b6094cc9c8532ab5133.tgz gcr.io/datasette-222320/datasette-new-service (+1 more) SUCCESS
Deploying container to Cloud Run service [new-service] in project [datasette-222320] region [us-central1]
✓ Deploying new service... Done. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460810523 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460810523 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEjMb | simonw 9599 | 2023-03-08T20:17:01Z | 2023-03-08T20:17:01Z | OWNER | I'm going to solve this by using the service name in that
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460809643 | https://github.com/simonw/datasette/issues/2036#issuecomment-1460809643 | https://api.github.com/repos/simonw/datasette/issues/2036 | IC_kwDOBm6k_c5XEi-r | simonw 9599 | 2023-03-08T20:16:10Z | 2023-03-08T20:16:10Z | OWNER | I think the code at fault is here: That name ends up defaulting to What I think happened in the And so the image that was pushed to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`publish cloudrun` reuses image tags, which can lead to very surprising deploy problems 1615862295 | |
1460760116 | https://github.com/simonw/datasette/pull/1999#issuecomment-1460760116 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5XEW40 | simonw 9599 | 2023-03-08T19:48:52Z | 2023-03-08T19:48:52Z | OWNER | I'm trying to get |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1460682625 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460682625 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XED-B | simonw 9599 | 2023-03-08T18:40:57Z | 2023-03-08T18:40:57Z | OWNER | Pushed that prototype to a branch: https://github.com/simonw/datasette/commit/0fe844e9adb006a0138e83102ced1329d9155c59 / https://github.com/simonw/datasette/compare/sql-list-parameters |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460679434 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460679434 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XEDMK | simonw 9599 | 2023-03-08T18:39:35Z | 2023-03-08T18:39:35Z | OWNER | I should consider the existing design of magic parameters here: https://docs.datasette.io/en/stable/sql_queries.html#magic-parameters
Should this new |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460668431 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460668431 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XEAgP | simonw 9599 | 2023-03-08T18:35:34Z | 2023-03-08T18:35:34Z | OWNER | To implement this properly need to do the following:
- Get the page to display multiple And a bonus feature: what if the Datasette UI layer spotted Also, when a page is re-displayed for on of these queries it could potentially add an extra form field allowing people to add another value. Though this has an annoying problem: how to tell the difference between an additional Maybe only support multiple |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460664619 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460664619 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XD_kr | simonw 9599 | 2023-03-08T18:32:29Z | 2023-03-08T18:32:29Z | OWNER | Got a prototype working: ```diff diff --git a/datasette/views/database.py b/datasette/views/database.py index 8d289105..6f9d8a44 100644 --- a/datasette/views/database.py +++ b/datasette/views/database.py @@ -226,6 +226,12 @@ class QueryView(DataView): ): db = await self.ds.resolve_database(request) database = db.name + # Disallow x__list query string parameters + invalid_params = [k for k in request.args if k.endswith("__list")] + if invalid_params: + raise DatasetteError( + "Invalid query string parameters: {}".format(", ".join(invalid_params)) + ) params = {key: request.args.get(key) for key in request.args} if "sql" in params: params.pop("sql") @@ -258,6 +264,11 @@ class QueryView(DataView): for named_parameter in named_parameters if not named_parameter.startswith("_") } + # Handle any __list parameters + for named_parameter in named_parameters: + if named_parameter.endswith("__list"): + list_values = request.args.getlist(named_parameter[:-6]) + params[named_parameter] = json.dumps(list_values)
That was this URL: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460659382 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460659382 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XD-S2 | simonw 9599 | 2023-03-08T18:28:00Z | 2023-03-08T18:28:00Z | OWNER | Also:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460654136 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460654136 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XD9A4 | simonw 9599 | 2023-03-08T18:25:46Z | 2023-03-08T18:25:46Z | OWNER | Trickiest part of the implementation here is that it needs to know to output three |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460639749 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460639749 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XD5gF | simonw 9599 | 2023-03-08T18:17:31Z | 2023-03-08T18:17:31Z | OWNER | Since we are pre-1.0 it's still OK to implement a feature that disallows So I'm going to prototype this as the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 | |
1460637906 | https://github.com/simonw/datasette/issues/2035#issuecomment-1460637906 | https://api.github.com/repos/simonw/datasette/issues/2035 | IC_kwDOBm6k_c5XD5DS | simonw 9599 | 2023-03-08T18:16:31Z | 2023-03-08T18:16:31Z | OWNER | I'm pretty sold on this as a feature now. The main question I have is which of these options to implement:
Actually on writing these out I realize that option 2 is the ONLY valid option. It's no good building a query that works against a JSON list if the user might pass just a single ID, |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Potential feature: special support for `?a=1&a=2` on the query page 1615692818 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
issue >30