html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app https://github.com/simonw/datasette/issues/1831#issuecomment-1278198700,https://api.github.com/repos/simonw/datasette/issues/1831,1278198700,IC_kwDOBm6k_c5ML8Os,9599,2022-10-13T21:29:09Z,2022-10-13T21:29:09Z,OWNER,"I'm going to commit the code now, but then I need to add some extra tests to ensure the breadcrumb permission display logic works correctly.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1397084281, https://github.com/simonw/datasette/issues/1831#issuecomment-1278198145,https://api.github.com/repos/simonw/datasette/issues/1831,1278198145,IC_kwDOBm6k_c5ML8GB,9599,2022-10-13T21:28:30Z,2022-10-13T21:28:30Z,OWNER,"This has turned into a full refactor of how breadcrumbs work. I'm using my first ever Jinja macro for this - I import that at the top of `base.html` so that it will be available everywhere else: ```html+jinja {% import ""_crumbs.html"" as crumbs with context %} ``` The `with context` bit is needed so the macro can see the new `crumb_items()` function that I'm adding to the global template rendering scope. Here's the full content of `_crumbs.html`: ```html+jinja {% macro nav(request, database=None, table=None) -%} {% set items=crumb_items(request=request, database=database, table=table) %} {% if items %}
{% for item in items %} {{ item.label }} {% if not loop.last %} / {% endif %} {% endfor %}
{% endif %} {%- endmacro %} ``` This means custom template authors can use their own `_crumbs.html` template to do something different with the breadcrumbs. In the actual templates I display breadcrumbs like this: ```html+jinja {% block crumbs %} {{ crumbs.nav(request=request, database=database) }} {% endblock %} ``` Pass `database=` to get `home / database_name` - pass `table=` as well to get `home / database_name / table_name` - if you just send `request=` you just get `home`. I've also made the default base template show the `home` breadcrumbs - other pages such as `table.html` and `row.html` can then over-ride `{% block crumbs %}` to get different breadcrumbs. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1397084281, https://github.com/simonw/datasette/issues/1831#issuecomment-1278175798,https://api.github.com/repos/simonw/datasette/issues/1831,1278175798,IC_kwDOBm6k_c5ML2o2,9599,2022-10-13T21:02:52Z,2022-10-13T21:02:52Z,OWNER,This patch to `default_permissions.py` made debugging easier: https://gist.github.com/simonw/daddf022e75a98ea6246ac1e12dc8759,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1397084281, https://github.com/simonw/datasette/issues/1831#issuecomment-1276882359,https://api.github.com/repos/simonw/datasette/issues/1831,1276882359,IC_kwDOBm6k_c5MG623,9599,2022-10-13T00:36:09Z,2022-10-13T00:36:19Z,OWNER,"It's important that, however this works, it supports custom templates changing how the breadcrumbs are displayed. Probably needs a `_crumbs.html` template.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1397084281,