issue_comments
29 rows where "created_at" is on date 2022-12-14 and user = 9599 sorted by updated_at descending
This data as json, CSV (advanced)
Suggested facets: issue_url, created_at (date), updated_at (date)
user 1
- simonw · 29 ✖
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1352371019 | https://github.com/simonw/datasette/issues/1957#issuecomment-1352371019 | https://api.github.com/repos/simonw/datasette/issues/1957 | IC_kwDOBm6k_c5Qm4tL | simonw 9599 | 2022-12-14T23:50:50Z | 2022-12-14T23:50:50Z | OWNER | One option: if any rows were truncated, show a button you can click to run the query again with truncation disabled - maybe with But... still want to truncate if the user runs a query that would return multiple MBs of HTML (assuming the other Datasette query limits don't stop that from happening). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reconsider row value truncation on query page 1497577017 | |
1352357322 | https://github.com/simonw/datasette/issues/1295#issuecomment-1352357322 | https://api.github.com/repos/simonw/datasette/issues/1295 | IC_kwDOBm6k_c5Qm1XK | simonw 9599 | 2022-12-14T23:28:49Z | 2022-12-14T23:28:49Z | OWNER | Related: - #1875 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors should have links to further information 855296937 | |
1352356356 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352356356 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5Qm1IE | simonw 9599 | 2022-12-14T23:27:25Z | 2022-12-14T23:28:16Z | OWNER | Also weird: errors returned by that mechanism look like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352354927 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352354927 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5Qm0xv | simonw 9599 | 2022-12-14T23:25:06Z | 2022-12-14T23:25:14Z | OWNER | Looks like the code I've written for permission checking on Which uses this: Having two different patterns to return errors is bad, I should fix that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352340518 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352340518 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5QmxQm | simonw 9599 | 2022-12-14T23:07:01Z | 2022-12-14T23:07:01Z | OWNER | Easiest fix would be to look for Not bullet-proof, so people might occasionally make JSON requests and get back an HTML error - but the documentation can tell people that they need to send those headers if they want to reliably get back JSON error messages. I'm happy with this as a solution. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352338620 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352338620 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5Qmwy8 | simonw 9599 | 2022-12-14T23:05:17Z | 2022-12-14T23:05:17Z | OWNER | Sniffing for a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352335503 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352335503 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5QmwCP | simonw 9599 | 2022-12-14T23:03:28Z | 2022-12-14T23:03:28Z | OWNER | This raises a more complicated issue At some point I'm likely to want to add an HTML interface for creating tables and inserting and updating rows. The obvious URLs for that are the same as for the JSON API: Those endpoints are currently POST only - and can return JSON all the time. If they start accepting form POSTs too they'll need to be able to accept form-encoded data and return HTML instead. That's OK - they can detect incoming JSON thanks to the I think it can still work though: I'll only set |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352331314 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352331314 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5QmvAy | simonw 9599 | 2022-12-14T22:59:36Z | 2022-12-14T22:59:36Z | OWNER | I'm going to prototype that up to see what it looks like. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352330825 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352330825 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5Qmu5J | simonw 9599 | 2022-12-14T22:58:51Z | 2022-12-14T22:59:27Z | OWNER | I need a way for those JSON endpoints to communicate back to the Since it gets the It's a bit of a cludge though! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352329027 | https://github.com/simonw/datasette/issues/1949#issuecomment-1352329027 | https://api.github.com/repos/simonw/datasette/issues/1949 | IC_kwDOBm6k_c5QmudD | simonw 9599 | 2022-12-14T22:56:24Z | 2022-12-14T22:57:19Z | OWNER | Most But that code triggers when the URL ends with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`.json` errors should be returned as JSON 1493471221 | |
1352075845 | https://github.com/simonw/datasette/issues/1956#issuecomment-1352075845 | https://api.github.com/repos/simonw/datasette/issues/1956 | IC_kwDOBm6k_c5QlwpF | simonw 9599 | 2022-12-14T19:57:17Z | 2022-12-14T19:58:22Z | OWNER | I'm going to test this using calls to I can add extra tests to https://github.com/simonw/datasette/blob/1a3dcf494376e32f7cff110c86a88e5b0a3f3924/tests/test_permissions.py#L605-L616 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle abbreviations properly in permission_allowed_actor_restrictions 1497288666 | |
1352070655 | https://github.com/simonw/datasette/issues/1956#issuecomment-1352070655 | https://api.github.com/repos/simonw/datasette/issues/1956 | IC_kwDOBm6k_c5QlvX_ | simonw 9599 | 2022-12-14T19:54:36Z | 2022-12-14T19:54:36Z | OWNER | Also this code should work with non-abbreviations too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle abbreviations properly in permission_allowed_actor_restrictions 1497288666 | |
1350415644 | https://github.com/simonw/datasette/issues/1952#issuecomment-1350415644 | https://api.github.com/repos/simonw/datasette/issues/1952 | IC_kwDOBm6k_c5QfbUc | simonw 9599 | 2022-12-14T05:22:59Z | 2022-12-14T05:22:59Z | OWNER | Non-memory named databases shouldn't show write actions, since those won't persist. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improvements to /-/create-token restrictions interface 1495716243 | |
1350414961 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350414961 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QfbJx | simonw 9599 | 2022-12-14T05:22:00Z | 2022-12-14T05:22:00Z | OWNER | I think the next big step for this feature is for me to actually use it to build a few things. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350414402 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350414402 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QfbBC | simonw 9599 | 2022-12-14T05:21:07Z | 2022-12-14T05:21:07Z | OWNER | It would be neat not to show write permissions against immutable databases too - and not hard from a performance perspective since it doesn't involve hundreds more permission checks. That will need permissions to grow a flag for if they need a mutable database though, which is a bigger job. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350413555 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350413555 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5Qfazz | simonw 9599 | 2022-12-14T05:19:52Z | 2022-12-14T05:19:52Z | OWNER | Maybe I should have kept Yeah I think I should. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350409537 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350409537 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QfZ1B | simonw 9599 | 2022-12-14T05:14:16Z | 2022-12-14T05:14:16Z | OWNER | New interface now live at https://latest.datasette.io/-/create-token It shouldn't be showing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350402667 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350402667 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QfYJr | simonw 9599 | 2022-12-14T05:05:10Z | 2022-12-14T05:05:10Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | ||
1350401651 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350401651 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QfX5z | simonw 9599 | 2022-12-14T05:03:59Z | 2022-12-14T05:03:59Z | OWNER | I shipped a working interface. Could still do with some extra tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350293098 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350293098 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5Qe9Zq | simonw 9599 | 2022-12-14T02:43:44Z | 2022-12-14T02:43:44Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | ||
1350231654 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350231654 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5QeuZm | simonw 9599 | 2022-12-14T01:48:50Z | 2022-12-14T01:48:57Z | OWNER | I like that the word |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | |
1350222701 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350222701 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5QesNt | simonw 9599 | 2022-12-14T01:35:05Z | 2022-12-14T01:35:22Z | OWNER | Maybe this: ```python datasette.create_token("root", expires_after=3600, restrict_all=("view-query", "view-table")) token = datasette.create_token("root", expires_after=3600, restrict_database={ "fixtures": ("view-query",) }) token = datasette.create_token("root", expires_after=3600, restrict_resource={ "fixtures": { "facetable": ("insert-row", "update-row") } }) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | |
1350220579 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350220579 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5Qersj | simonw 9599 | 2022-12-14T01:31:38Z | 2022-12-14T01:31:38Z | OWNER | The problem with Likewise, And the nested |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | |
1350218177 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350218177 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5QerHB | simonw 9599 | 2022-12-14T01:27:45Z | 2022-12-14T01:30:41Z | OWNER | Some sketches: ```python Token for root usertoken = datasette.create_token("root") Expiring in an hourtoken = datasette.create_token("root", expires_after=3600)
Limited to view-query and view-tabletoken = datasette.create_token("root", expires_after=3600, all=("view-query", "view-table")) I'm not sure about that all= nameLimits within a specific database:token = datasette.create_token("root", expires_after=3600, databases={ "fixtures": ("view-query",) }) And specific tables:token = datasette.create_token("root", expires_after=3600, tables={ "fixtures": { "facetable": ("insert-row", "update-row") } }) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | |
1350217380 | https://github.com/simonw/datasette/issues/1951#issuecomment-1350217380 | https://api.github.com/repos/simonw/datasette/issues/1951 | IC_kwDOBm6k_c5Qeq6k | simonw 9599 | 2022-12-14T01:26:22Z | 2022-12-14T01:26:22Z | OWNER | It's going to look very similar to the CLI tool, at least in terms of capabilities: ``` Usage: datasette create-token [OPTIONS] ID Create a signed API token for the specified actor ID Example:
To allow only "view-database-download" for all databases:
To allow "create-table" against a specific database:
To allow "insert-row" against a specific table:
Restricted actions can be specified multiple times using multiple --all, --database, and --resource options. Add --debug to see a decoded version of the token. ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.create_token(...)` method for creating signed API tokens 1495431932 | |
1350215936 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350215936 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QeqkA | simonw 9599 | 2022-12-14T01:23:42Z | 2022-12-14T01:23:42Z | OWNER | With tilde-encoding for database and table names the HTML looks like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350148192 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350148192 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QeaBg | simonw 9599 | 2022-12-14T00:19:06Z | 2022-12-14T00:19:06Z | OWNER | Another option: I could set a time limit - say 200ms - on how long I'm willing to spend calculating permissions before displaying this form First calculate view permissions for tables and databases (and maybe views and canned queries too). Then see if I can check every permission that I'm going to show as a checkbox on this page. If I get that done within the time limit use that to show the options. If I run out of time show all options and maybe include a note saying that some of them may not actually be available. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350125018 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350125018 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QeUXa | simonw 9599 | 2022-12-14T00:08:09Z | 2022-12-14T00:08:09Z | OWNER | Also: don't show hidden tables. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 | |
1350124381 | https://github.com/simonw/datasette/issues/1947#issuecomment-1350124381 | https://api.github.com/repos/simonw/datasette/issues/1947 | IC_kwDOBm6k_c5QeUNd | simonw 9599 | 2022-12-14T00:07:51Z | 2022-12-14T00:07:51Z | OWNER | Another thing to consider in the future: once Datasette can support thousands of tables (see #417) the list on this page will turn into multiple MBs of HTML, which may cause all kinds of problems - not to mention the overhead of all of those table visibility permission checks. Hopefully by then I'll have a good fix for the permission listings problem: - #1152 And I can apply the same mechanism here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
UI to create reduced scope tokens from the `/-/create-token` page 1493390939 |
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 7