{"html_url": "https://github.com/simonw/datasette/issues/1988#issuecomment-1379502161", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1988", "id": 1379502161, "node_id": "IC_kwDOBm6k_c5SOYhR", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-01-11T21:24:24Z", "updated_at": "2023-01-11T21:25:05Z", "author_association": "OWNER", "body": "Renaming `sql()` to `template_sql()` in https://github.com/simonw/datasette-template-sql and shipping a 2.0 release of that plugin (it is currently at 1.0.2) would be a sensible short-term fix too.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1529707837, "label": "Reconsider pattern where plugins could break existing template context"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1988#issuecomment-1379500131", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1988", "id": 1379500131, "node_id": "IC_kwDOBm6k_c5SOYBj", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-01-11T21:22:31Z", "updated_at": "2023-01-11T21:22:31Z", "author_association": "OWNER", "body": "Relevant code:\r\n\r\nhttps://github.com/simonw/datasette/blob/6a352e99ab988dbf8fd22a100049caa6ad33f1ec/datasette/app.py#L1138-L1149\r\n\r\nhttps://github.com/simonw/datasette/blob/6a352e99ab988dbf8fd22a100049caa6ad33f1ec/datasette/app.py#L1193-L1195", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1529707837, "label": "Reconsider pattern where plugins could break existing template context"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1988#issuecomment-1379492499", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1988", "id": 1379492499, "node_id": "IC_kwDOBm6k_c5SOWKT", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-01-11T21:15:01Z", "updated_at": "2023-01-11T21:20:14Z", "author_association": "OWNER", "body": "This is tricky. `datasette-template-sql` registers a custom `sql()` function, but @cldellow spotted a situation where this would interfere with an existing `{{ sql }}` variable in a template context!\r\n\r\nhttps://github.com/simonw/datasette-template-sql/blob/70483fd94bb0349761830e37c9ab928e8966841a/datasette_template_sql/__init__.py\r\n\r\n```python\r\n@hookimpl\r\ndef extra_template_vars(datasette):\r\n async def execute_sql(sql, args=None, database=None):\r\n db = datasette.get_database(database)\r\n return (await db.execute(sql, args)).rows\r\n\r\n return {\"sql\": execute_sql}\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1529707837, "label": "Reconsider pattern where plugins could break existing template context"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1988#issuecomment-1379495504", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1988", "id": 1379495504, "node_id": "IC_kwDOBm6k_c5SOW5Q", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-01-11T21:18:00Z", "updated_at": "2023-01-11T21:18:25Z", "author_association": "OWNER", "body": "A few options:\r\n- Ensure that the explicit template context overrides anything that plugins might do - so in this case the `sql(...)` function would not be available on that page. This would break people who have custom templates that use that function though.\r\n- Encourage naming conventions where functions and variables from plugins are less likely to interfere with existing functionality.\r\n- Completely change how templates work, so you never have a variable called `{{ sql }}` - it is always accessed via some parent object instead, such as `{{ page.sql }}`.\r\n\r\nThat last option actually fits quite well with my efforts to unify template rendering with JSON (and JSON extras) so it might be the best way to address this.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1529707837, "label": "Reconsider pattern where plugins could break existing template context"}, "performed_via_github_app": null}