{"html_url": "https://github.com/simonw/datasette/issues/284#issuecomment-391912392", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/284", "id": 391912392, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MTkxMjM5Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T01:16:56Z", "updated_at": "2018-05-25T01:17:13Z", "author_association": "OWNER", "body": "`allow_sql` should only affect the `?sql=` parameter and whether or not the form is displayed. You should still be able to use and execute canned queries even if this option is turned off.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 326182814, "label": "Ability to enable/disable specific features via --config"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/284#issuecomment-391950691", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/284", "id": 391950691, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MTk1MDY5MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T06:01:23Z", "updated_at": "2018-05-25T06:05:02Z", "author_association": "OWNER", "body": "Demo:\r\n\r\n datasette publish now --branch=master fixtures.db \\\r\n --source=\"#284 Demo\" \\\r\n --source_url=\"https://github.com/simonw/datasette/issues/284\" \\\r\n --extra-options \"--config allow_sql:off --config allow_facet:off --config allow_download:off\" \\\r\n --name=datasette-demo-284\r\n\r\n now alias https://datasette-demo-284-jogjwngegj.now.sh datasette-demo-284.now.sh\r\n\r\nhttps://datasette-demo-284.now.sh/\r\n\r\nNote the following:\r\n\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea has no SQL input textarea\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea has no database download link\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea.db returns 403 forbidden\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea?sql=select%20*%20from%20sqlite_master throws error 400\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea/facetable shows no suggested facets\r\n* https://datasette-demo-284.now.sh/fixtures-fda0fea/facetable?_facet=city_id throws error 400", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 326182814, "label": "Ability to enable/disable specific features via --config"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/272#issuecomment-392118755", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/272", "id": 392118755, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjExODc1NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T16:56:40Z", "updated_at": "2018-06-05T16:01:13Z", "author_association": "OWNER", "body": "Thinking about this further, maybe I should embrace ASGI turtles-all-the-way-down and teach each datasette view class to take a scope to the constructor and act entirely as an ASGI component. Would be a nice way of diving deep into ASGI and I can add utility helpers for things like querystring evaluation as I need them.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 324188953, "label": "Port Datasette to ASGI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/286#issuecomment-392121500", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/286", "id": 392121500, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjEyMTUwMA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T17:06:46Z", "updated_at": "2018-05-25T17:06:46Z", "author_association": "OWNER", "body": "A few extra thoughts:\r\n\r\n* Some users may want to opt out of this. We could have `--config version_in_hash:false`\r\n* should this affect the filename for the downloadable copy of the SQLite database? Maybe that should stay as just the hash of the contents, but that's a fair bit more complex\r\n* What about users who stick with the same version of datasette but deploy changes to their custom templates - how can we help them cache bust? Maybe with `--config cache_version:2`", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 326599525, "label": "Database hash should include current datasette version"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/286#issuecomment-392121743", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/286", "id": 392121743, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjEyMTc0Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T17:07:36Z", "updated_at": "2018-05-25T17:07:36Z", "author_association": "OWNER", "body": "This is also a great excuse to finally write up some detailed documentation on Datasette's caching strategy", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 326599525, "label": "Database hash should include current datasette version"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/267#issuecomment-392121905", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/267", "id": 392121905, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjEyMTkwNQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T17:08:14Z", "updated_at": "2018-05-25T17:08:14Z", "author_association": "OWNER", "body": "See also #286", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 323716411, "label": "Documentation for URL hashing, redirects and cache policy"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/259#issuecomment-392212119", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/259", "id": 392212119, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjIxMjExOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T23:22:26Z", "updated_at": "2018-05-25T23:22:26Z", "author_association": "OWNER", "body": "This should detect any table which can be linked to the current table via some other table, based on the other table having a foreign key to them both.\r\n\r\nThese join tables could be arbitrarily complicated. They might have foreign keys to more than two other tables, maybe even multiple foreign keys to the same column.\r\n\r\nIdeally M2M defection would catch all of these cases. Maybe the resulting inspect data looks something like this:\r\n\r\n```\r\n\"artists\": {\r\n ...\r\n \"m2m\": [{\r\n \"other_table\": \"festivals\",\r\n \"through\": \"performances\",\r\n \"our_fk\": \"artist_id\",\r\n \"other_fk\": \"performance_id\"\r\n }]\r\n```\r\n\r\nLet's ignore compound primary keys: we k it detect m2m relationships where the join table has foreign keys to a single primary key on the other two tables.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 322787470, "label": "inspect() should detect many-to-many relationships"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/259#issuecomment-392214791", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/259", "id": 392214791, "node_id": "MDEyOklzc3VlQ29tbWVudDM5MjIxNDc5MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2018-05-25T23:43:15Z", "updated_at": "2018-07-29T00:56:03Z", "author_association": "OWNER", "body": "We may need to derive a usable name for each of these relationships that can be used in eg querystring parameters.\r\n\r\nThe name of the join table is a reasonable choice here. Say the join table is called `event_tags` - the querystring for returning all events that are tagged `badger` could be `/db/events?_m2m_event_tags__tag=badger` perhaps?\r\n\r\nBut what if `event_tags` has more than one foreign key back to `events`? Might need to specify the column in `events` that is referred back to by `event_tags` somehow in that case.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 322787470, "label": "inspect() should detect many-to-many relationships"}, "performed_via_github_app": null}