{"id": 497162288, "node_id": "MDU6SXNzdWU0OTcxNjIyODg=", "number": 575, "title": "Plugin documentation should cover how to bundle static/templates in setup.py", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 1, "created_at": "2019-09-23T15:15:18Z", "updated_at": "2020-10-24T20:06:17Z", "closed_at": "2020-10-24T20:03:53Z", "author_association": "OWNER", "pull_request": null, "body": "These sections here should cover it: https://datasette.readthedocs.io/en/latest/plugins.html#static-assets\r\n\r\nExample: https://github.com/simonw/datasette-auth-github/blob/bf01f8f01b87a6cb09c47380ba0a86e0546ebb38/setup.py#L30\r\n```\r\npackage_data={\"datasette_auth_github\": [\"templates/*.html\"]},\r\n```\r\nAlso from https://github.com/simonw/datasette-plugin-demos/blob/0ccf9e6189e923046047acd7878d1d19a2cccbb1/setup.py#L18-L22\r\n\r\n package_data={\r\n 'datasette_plugin_demos': [\r\n 'static/plugin.js',\r\n ],\r\n },\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/575/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": 573755726, "node_id": "MDU6SXNzdWU1NzM3NTU3MjY=", "number": 690, "title": "Mechanism for plugins to add action menu items for various things", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 11, "created_at": "2020-03-02T06:48:36Z", "updated_at": "2020-10-30T05:20:43Z", "closed_at": "2020-10-30T05:20:42Z", "author_association": "OWNER", "pull_request": null, "body": "Now that we have support for plugins that can write I'm seeing all sorts of places where a plugin might need to add UI to the table page.\r\n\r\nSome examples:\r\n\r\n- `datasette-configure-fts` needs to add a \"configure search for this table\" link\r\n- a plugin that lets you render or delete tables needs to add a link or button somewhere\r\n- existing plugins like `datasette-vega` and `datasette-cluster-map` already do this with JavaScript\r\n\r\nThe challenge here is that multiple plugins may want to do this, so simply overriding templates and populating names blocks doesn't entirely work as templates may override each other.", "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/690/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": 634651079, "node_id": "MDU6SXNzdWU2MzQ2NTEwNzk=", "number": 814, "title": "Remove --debug option from datasette serve", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 1, "created_at": "2020-06-08T14:10:14Z", "updated_at": "2020-10-23T19:44:04Z", "closed_at": "2020-10-10T23:39:43Z", "author_association": "OWNER", "pull_request": null, "body": "It doesn't appear to do anything useful at all:\r\n\r\nhttps://github.com/simonw/datasette/blob/f786033a5f0098371cb1df1ce83959b27c588115/datasette/cli.py#L251-L253\r\n\r\nhttps://github.com/simonw/datasette/blob/f786033a5f0098371cb1df1ce83959b27c588115/datasette/cli.py#L365-L367", "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/814/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": 637395097, "node_id": "MDU6SXNzdWU2MzczOTUwOTc=", "number": 838, "title": "Incorrect URLs when served behind a proxy with base_url set", "user": {"value": 79913, "label": "tsibley"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 14, "created_at": "2020-06-11T23:58:55Z", "updated_at": "2021-11-20T19:35:48Z", "closed_at": "2021-11-20T19:35:48Z", "author_association": "NONE", "pull_request": null, "body": "I'm running `datasette serve --config base_url:/foo/ \u2026`, proxying to it with this Apache config:\r\n\r\n ProxyPass /foo/ http://localhost:8001/ \r\n ProxyPassReverse /foo/ http://localhost:8001/ \r\n\r\nand then accessing it via `https://example.com/foo/`.\r\n\r\nAlthough many of the URLs in the pages are correct (presumably because they either use absolute paths which include `base_url` or relative paths), the faceting and pagination links still use fully-qualified URLs pointing at `http://localhost:8001`.\r\n\r\nI looked into this a little in the source code, and it seems to be an issue anywhere `request.url` or `request.path` is used, as these contain the values for the request between the frontend (Apache) and backend (Datasette) server. Those properties are primarily used via the `path_with_\u2026` family of utility functions and the `Datasette.absolute_url` method.", "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/838/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": 644582921, "node_id": "MDU6SXNzdWU2NDQ1ODI5MjE=", "number": 865, "title": "base_url doesn't seem to work when adding criteria and clicking \"apply\"", "user": {"value": 6739646, "label": "tballison"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 11, "created_at": "2020-06-24T12:39:57Z", "updated_at": "2020-11-12T23:49:24Z", "closed_at": "2020-10-20T05:22:59Z", "author_association": "NONE", "pull_request": null, "body": "Over on Apache Tika, we're using datasette to allow users to make sense of the metadata for our file regression testing corpus.\r\n\r\nThis could be user error in how I've set up the reverse proxy!\r\n\r\nI started datasette like so:\r\n`docker run -d -p 8001:8001 -v `pwd`:/mnt datasetteproject/datasette datasette -p 8001 -h 0.0.0.0 /mnt/corpora-metadata.db --config sql_time_limit_ms:60000 --config base_url:/datasette/`\r\n\r\nI then reverse proxied like so:\r\n\r\n ProxyPreserveHost On\r\n ProxyPass /datasette http://x.y.z.q:xxxx\r\n ProxyPassReverse /datasette http://x.y.z.q:xxx\r\n\r\nRegular sql works perfectly:\r\nhttps://corpora.tika.apache.org/datasette/corpora-metadata?sql=select+mime_string%2C+count%281%29+as+cnt%0D%0Afrom+profiles+p%0D%0Ajoin+mimes+m+on+p.mime_id%3Dm.mime_id%0D%0Agroup+by+mime_string%0D%0Aorder+by+cnt+desc\r\n\r\n\r\nHowever, adding criteria and clicking 'Apply' \r\nhttps://corpora.tika.apache.org/datasette/corpora-metadata/tika_1_24_1_mimes?_sort=file&mime__exact=text%2Fplain\r\n\r\nbounces back to:\r\nhttps://corpora.tika.apache.org/corpora-metadata/tika_1_24_1_mimes?_sort=file&file__contains=bug&mime__exact=text%2Fplain", "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/865/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": 661605489, "node_id": "MDU6SXNzdWU2NjE2MDU0ODk=", "number": 900, "title": "Some links don't honor base_url", "user": {"value": 50220, "label": "noteed"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 3, "created_at": "2020-07-20T09:40:50Z", "updated_at": "2020-10-23T19:44:04Z", "closed_at": "2020-10-15T22:57:55Z", "author_association": "NONE", "pull_request": null, "body": "Hi,\r\n\r\nI've been playing with Datasette behind Nginx (awesome tool, thanks !). It seems some URLs are OK but some aren't. For instance in https://github.com/simonw/datasette/blob/master/datasette/templates/query.html#L61 it seems that `url_csv` includes a `/` prefix, resulting in the `base_url` not beeing honored.\r\n\r\nActually here, it seems that dropping the prefix `/` to make the link relative is enough (so it may not be strictly related to `base_url`).\r\n\r\nAdditional information:\r\n\r\n```\r\ndatasette, version 0.45+0.gf1f581b.dirty\r\n```\r\n\r\nRelevant Nginx configuration (note that all the trailing slashes have some effect):\r\n\r\n```\r\n location /datasette/ {\r\n proxy_pass http://127.0.0.1:9001/;\r\n proxy_set_header Host $host;\r\n }\r\n```\r\n\r\nRelelvant Datasette configuration (slashes matter too):\r\n\r\n```\r\n --config base_url:/datasette/\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/900/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": 663228985, "node_id": "MDU6SXNzdWU2NjMyMjg5ODU=", "number": 904, "title": "datasette.urls.table() / .instance() / .database() methods for constructing URLs, also exposed to templates", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 11, "created_at": "2020-07-21T18:42:52Z", "updated_at": "2020-10-23T19:44:05Z", "closed_at": "2020-10-20T00:51:51Z", "author_association": "OWNER", "pull_request": null, "body": "I tried using this block of template in a plugin and got an error:\r\n```html\r\n{% block nav %}\r\n
\r\n home /\r\n {{ database }} /\r\n {{ table }}\r\n
\r\n {{ super() }}\r\n{% endblock %}\r\n```\r\nError: `'database_url' is undefined`\r\n\r\nThat's because `database_url` is only made available by the BaseView template here:\r\n\r\nhttps://github.com/simonw/datasette/blob/d6e03b04302a0852e7133dc030eab50177c37be7/datasette/views/base.py#L110-L125", "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/904/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": 713209404, "node_id": "MDU6SXNzdWU3MTMyMDk0MDQ=", "number": 988, "title": "Mechanism for plugins to construct URLs that respect base_url", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 2, "created_at": "2020-10-01T21:54:15Z", "updated_at": "2020-10-23T19:44:05Z", "closed_at": "2020-10-15T23:01:02Z", "author_association": "OWNER", "pull_request": null, "body": "> Had a thought: this is likely to break in plugins too, such as `datasette-edit-schema` which constructs URLs for redirects e.g. here: https://github.com/simonw/datasette-edit-schema/blob/dbd0abee6dd3385b114cfe9671f7ead1c4855b60/datasette_edit_schema/__init__.py#L46-L48\r\n\r\n_Originally posted by @simonw in https://github.com/simonw/datasette/issues/865#issuecomment-702418045_", "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/988/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": 717699884, "node_id": "MDU6SXNzdWU3MTc2OTk4ODQ=", "number": 998, "title": "Wide tables should scroll horizontally within the page", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "comments": 8, "created_at": "2020-10-08T22:13:27Z", "updated_at": "2020-12-11T09:25:09Z", "closed_at": "2020-10-22T01:12:26Z", "author_association": "OWNER", "pull_request": null, "body": "Wrap the main table in `