{"id": 444749373, "node_id": "MDU6SXNzdWU0NDQ3NDkzNzM=", "number": 469, "title": "publish commands should use new -i option", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": null, "comments": 1, "created_at": "2019-05-16T04:31:40Z", "updated_at": "2019-05-19T22:53:41Z", "closed_at": "2019-05-19T22:53:41Z", "author_association": "OWNER", "pull_request": null, "body": "I can make this change only after releasing 0.28 - if I make the change earlier than that `publish heroku` etc will break because they will install the latest release of Datasette which will not understand the `-i` option.\r\n\r\nThis is a one-line fix: replace this:\r\n\r\nhttps://github.com/simonw/datasette/blob/2ad9d15cd6901654e6801e2faa29e6fc08bae5fa/datasette/utils.py#L489\r\n\r\nWith this: (need to do it for other publishers too though)\r\n\r\n```\r\nquoted_files = \" \".join(\r\n [\"-i {}\".format(shlex.quote(file_name)) for file_name in file_names]\r\n)\r\n```", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/469/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 440313209, "node_id": "MDU6SXNzdWU0NDAzMTMyMDk=", "number": 451, "title": "Update README", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 1, "created_at": "2019-05-04T11:26:07Z", "updated_at": "2019-05-19T22:23:43Z", "closed_at": "2019-05-19T22:23:43Z", "author_association": "OWNER", "pull_request": null, "body": "The README is quite out of date now. It includes out-dated copies of help files, promotes the old Zeit Now integration and duplicates a lot of material from the docs.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/451/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 443034003, "node_id": "MDU6SXNzdWU0NDMwMzQwMDM=", "number": 463, "title": "Write release notes for 0.28", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 1, "created_at": "2019-05-11T20:36:56Z", "updated_at": "2019-05-19T21:24:44Z", "closed_at": "2019-05-19T21:24:20Z", "author_association": "OWNER", "pull_request": null, "body": "So much new stuff!\r\n\r\nhttps://github.com/simonw/datasette/compare/0.27...master", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/463/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 445855789, "node_id": "MDU6SXNzdWU0NDU4NTU3ODk=", "number": 474, "title": "Do not allow downloads of mutable databases", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 1, "created_at": "2019-05-19T19:35:32Z", "updated_at": "2019-05-19T20:41:17Z", "closed_at": "2019-05-19T20:41:16Z", "author_association": "OWNER", "pull_request": null, "body": "If the file changes during download it will probably result in a corrupt download. Safer not to allow downloads at all of mutable databases.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/474/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 445855910, "node_id": "MDU6SXNzdWU0NDU4NTU5MTA=", "number": 475, "title": "Documentation for about and about_url metadata", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 0, "created_at": "2019-05-19T19:36:59Z", "updated_at": "2019-05-19T20:13:36Z", "closed_at": "2019-05-19T20:13:36Z", "author_association": "OWNER", "pull_request": null, "body": "Added in https://github.com/simonw/datasette/commit/bf6b0f918de4aeee7c1036ac975ce2fb23237da7 without docs.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/475/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 445858491, "node_id": "MDU6SXNzdWU0NDU4NTg0OTE=", "number": 476, "title": "Remove \"datasette skeleton\"", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 0, "created_at": "2019-05-19T20:04:11Z", "updated_at": "2019-05-19T20:06:06Z", "closed_at": "2019-05-19T20:06:06Z", "author_association": "OWNER", "pull_request": null, "body": "It doesn't work any more, and it's not a particularly useful feature - I've hardly used it since I added it.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/476/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 421971339, "node_id": "MDU6SXNzdWU0MjE5NzEzMzk=", "number": 420, "title": "Fix all the places that currently use .inspect() data", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 13, "created_at": "2019-03-17T20:54:37Z", "updated_at": "2019-05-19T19:58:31Z", "closed_at": "2019-05-02T01:13:46Z", "author_association": "OWNER", "pull_request": null, "body": "See #419: if Datasette is going to work against mutable SQLite files it can no longer assume that the `.inspect()` method will have cached the correct schema for all tables in all attached databases.\r\n\r\nSo everywhere in the code at the moment that relies on `.inspect()` data needs to be modified to use live introspection of the schema instead.\r\n\r\nFrom [a comment later on](https://github.com/simonw/datasette/issues/420#issuecomment-474398127): here are the uses I need to fix as a checklist:\r\n\r\n- [x] `table_exists()`\r\n- [x] `info[\"file\"]` in `.execute()`\r\n- [x] `resolve_db_name()`\r\n- [x] `.database_url(database)`\r\n- [x] `DatabaseDownload` file path\r\n- [x] `sortable_columns_for_table()` uses it to find the columns in a table\r\n- [x] `expandable_columns()` uses it to find foreign keys\r\n- [x] `expand_foreign_keys()` uses it to find foreign keys\r\n- [x] `display_columns_and_rows()` uses it to find primary keys and foreign keys... but also has access to a cursor.description which it uses to list the columns\r\n- [x] `TableView.data` uses it to lookup columns and primary keys and the table_rows_count (used if the thing isn't a view) and probably a few more things, this method is huge!\r\n- [x] `RowView.data` uses it for primary keys\r\n- [x] `foreign_key_tables()` uses it for foreign keys\n- [x] `DatabaseView` list of tables\r\n- [x] `IndexView`\r\n", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/420/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 444997937, "node_id": "MDU6SXNzdWU0NDQ5OTc5Mzc=", "number": 470, "title": "/-/databases showing currently attached database details", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 1, "created_at": "2019-05-16T14:45:18Z", "updated_at": "2019-05-19T19:28:44Z", "closed_at": "2019-05-16T14:50:26Z", "author_association": "OWNER", "pull_request": null, "body": "Split from #419. Mainly useful to see what is connected as mutable v.s. immutable.\r\n\r\nAlso helps fill the gap left by `/-/inspect` until #465 ", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/470/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 445230077, "node_id": "MDU6SXNzdWU0NDUyMzAwNzc=", "number": 472, "title": "Rename \"publish now\" to \"publish nowv1\"", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 1, "created_at": "2019-05-17T01:58:52Z", "updated_at": "2019-05-19T18:07:39Z", "closed_at": "2019-05-19T18:07:39Z", "author_association": "OWNER", "pull_request": null, "body": "This will help clarify that you need a nowv1 account use it.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/472/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 421985685, "node_id": "MDU6SXNzdWU0MjE5ODU2ODU=", "number": 421, "title": "Documentation for ?_hash=1 and Datasette's hashed URL caching", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 4305096, "label": "0.28"}, "comments": 2, "created_at": "2019-03-17T23:08:36Z", "updated_at": "2019-05-19T05:32:37Z", "closed_at": "2019-05-19T05:31:27Z", "author_association": "OWNER", "pull_request": null, "body": "Follow on from #418 - the Datasette documentation needs an entire section (probably a new page) describing exactly how the hash-in-URL caching mechanism works.", "repo": {"value": 107914493, "label": "datasette"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/simonw/datasette/issues/421/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"}