{"html_url": "https://github.com/simonw/datasette/issues/521#issuecomment-505279560", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/521", "id": 505279560, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTI3OTU2MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T04:40:16Z", "updated_at": "2019-06-25T04:40:38Z", "author_association": "OWNER", "body": "I think the trick is to redefine what a \"cell_row\" is. Each row is currently a list of cells:\r\n\r\nhttps://github.com/simonw/datasette/blob/6341f8cbc7833022012804dea120b838ec1f6558/datasette/views/table.py#L159-L163\r\n\r\nI can redefine the row (the `cells` variable in the above example) as a thing-that-iterates-cells (hence behaving like a list) but that also supports `__getitem__` access for looking up cell values if you know the name of the column.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 459621683, "label": "Easier way of creating custom row templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/521#issuecomment-505280611", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/521", "id": 505280611, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTI4MDYxMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T04:46:10Z", "updated_at": "2019-06-25T04:46:10Z", "author_association": "OWNER", "body": "Of course I can't do it in this part of he code because it's constructing plain JSON objects here. \r\n\r\nI'll need to do it in the section that prepares special objects for the HTML.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 459621683, "label": "Easier way of creating custom row templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/521#issuecomment-505405030", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/521", "id": 505405030, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTQwNTAzMA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T11:34:21Z", "updated_at": "2019-06-25T11:34:21Z", "author_association": "OWNER", "body": "Actually I'm OK here - `display_columns_and_rows()` is already only used by the HTML template rendering path.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 459621683, "label": "Easier way of creating custom row templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/521#issuecomment-505421892", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/521", "id": 505421892, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTQyMTg5Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T12:26:54Z", "updated_at": "2019-06-25T12:26:54Z", "author_association": "OWNER", "body": "This is starting to shape up. Example template:\r\n```\r\n{% for row in display_rows %}\r\n
\r\n
\r\n

\r\n {{ row[\"First_Name\"] }} {{ row[\"Last_Name\"] }}\r\n

\r\n {% if row[\"Link_to_Photo\"] %}\r\n \r\n {% endif %}\r\n {% for cell in row.cells[3:] %}\r\n {% if cell.raw and cell.column != \"createdTime\" %}\r\n

{{ cell.column }}: {{ cell.value }}

\r\n {% endif %}\r\n {% endfor %}\r\n
\r\n{% endfor %}\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 459621683, "label": "Easier way of creating custom row templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/521#issuecomment-505422550", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/521", "id": 505422550, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTQyMjU1MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T12:28:48Z", "updated_at": "2019-06-25T12:28:48Z", "author_association": "OWNER", "body": "Still needed before merge: documentation! I can expand this section: https://datasette.readthedocs.io/en/stable/custom_templates.html#custom-templates", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 459621683, "label": "Easier way of creating custom row templates"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/498#issuecomment-505635729", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/498", "id": 505635729, "node_id": "MDEyOklzc3VlQ29tbWVudDUwNTYzNTcyOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-06-25T21:48:46Z", "updated_at": "2019-06-25T21:48:46Z", "author_association": "OWNER", "body": "Hmmm... you know I think I actually need this for my https://github.com/simonw/fara-datasette project...\r\n\r\nhttps://fara.datasettes.com/fara?sql=select+1+as+sortme%2C+%27FARA_All_RegistrantDocs%27+as+%27table%27%2C+rowid+as+id%2C+Document_Type+%7C%7C+%27+%27+%7C%7C+Short_Form_Name+%7C%7C+%27+for+%27+%7C%7C+Registrant_Name+as+title%0D%0Afrom+FARA_All_RegistrantDocs%0D%0A++where+rowid+in+%28select+rowid+from+FARA_All_RegistrantDocs_fts+where+FARA_All_RegistrantDocs_fts+match+%3Asearch%0D%0A++++order+by+rank+limit+10%0D%0A%29%0D%0Aunion%0D%0Aselect+2+as+sortme%2C+%27FARA_All_ForeignPrincipals%27+as+%27table%27%2C+rowid+as+id%2C+Foreign_Principal+%7C%7C+%27+for+%27+%7C%7C+%22Country%2FLocation_Represented%22+as+title%0D%0Afrom+FARA_All_ForeignPrincipals%0D%0A++where+rowid+in+%28select+rowid+from+FARA_All_ForeignPrincipals_fts+where+FARA_All_ForeignPrincipals_fts+match+%3Asearch%0D%0A++++order+by+rank+limit+10%0D%0A%29%0D%0Aunion%0D%0Aselect+3+as+sortme%2C+%27FARA_All_Registrants%27+as+%27table%27%2C+rowid+as+id%2C+Name+%7C%7C+%27+on+%27+%7C%7C+Registration_Date+%7C%7C+%27+in+%27+%7C%7C+City+as+title%0D%0Afrom+FARA_All_Registrants%0D%0A++where+rowid+in+%28select+rowid+from+FARA_All_Registrants_fts+where+FARA_All_Registrants_fts+match+%3Asearch%0D%0A++++order+by+rank+limit+10%0D%0A%29%0D%0Aunion%0D%0Aselect+4+as+sortme%2C+%27FARA_All_ShortForms%27+as+%27table%27%2C+rowid+as+id%2C+Short_Form_First_Name+%7C%7C+%27+%27+%7C%7C+Short_Form_Last_Name+%7C%7C+%27+in+%27+%7C%7C+City+as+title%0D%0Afrom+FARA_All_ShortForms%0D%0A++where+rowid+in+%28select+rowid+from+FARA_All_ShortForms_fts+where+FARA_All_ShortForms_fts+match+%3Asearch%0D%0A++++order+by+rank+limit+10%0D%0A%29%0D%0A%0D%0A&search=cohen", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 451513541, "label": "Full text search of all tables at once?"}, "performed_via_github_app": null}