mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Don't show 'None' as label for nullable foreign key, closes #406
This commit is contained in:
parent
ed57e4f990
commit
14da70525b
4 changed files with 25 additions and 5 deletions
|
|
@ -637,7 +637,7 @@ class TableView(RowTableShared):
|
||||||
new_row = CustomRow(columns)
|
new_row = CustomRow(columns)
|
||||||
for column in row.keys():
|
for column in row.keys():
|
||||||
value = row[column]
|
value = row[column]
|
||||||
if (column, value) in expanded_labels:
|
if (column, value) in expanded_labels and value is not None:
|
||||||
new_row[column] = {
|
new_row[column] = {
|
||||||
"value": value,
|
"value": value,
|
||||||
"label": expanded_labels[(column, value)],
|
"label": expanded_labels[(column, value)],
|
||||||
|
|
|
||||||
|
|
@ -754,6 +754,7 @@ INSERT INTO primary_key_multiple_columns VALUES (1, 'hey', 'world');
|
||||||
INSERT INTO primary_key_multiple_columns_explicit_label VALUES (1, 'hey', 'world2');
|
INSERT INTO primary_key_multiple_columns_explicit_label VALUES (1, 'hey', 'world2');
|
||||||
|
|
||||||
INSERT INTO foreign_key_references VALUES (1, 1, 1);
|
INSERT INTO foreign_key_references VALUES (1, 1, 1);
|
||||||
|
INSERT INTO foreign_key_references VALUES (2, null, null);
|
||||||
|
|
||||||
INSERT INTO complex_foreign_keys VALUES (1, 1, 2, 1);
|
INSERT INTO complex_foreign_keys VALUES (1, 1, 2, 1);
|
||||||
INSERT INTO custom_foreign_key_label VALUES (1, 1);
|
INSERT INTO custom_foreign_key_label VALUES (1, 1);
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,7 @@ def test_database_page(app_client):
|
||||||
"name": "foreign_key_references",
|
"name": "foreign_key_references",
|
||||||
"columns": ["pk", "foreign_key_with_label", "foreign_key_with_no_label"],
|
"columns": ["pk", "foreign_key_with_label", "foreign_key_with_no_label"],
|
||||||
"primary_keys": ["pk"],
|
"primary_keys": ["pk"],
|
||||||
"count": 1,
|
"count": 2,
|
||||||
"hidden": False,
|
"hidden": False,
|
||||||
"fts_table": None,
|
"fts_table": None,
|
||||||
"foreign_keys": {
|
"foreign_keys": {
|
||||||
|
|
@ -1519,7 +1519,7 @@ def test_expand_labels(app_client):
|
||||||
def test_expand_label(app_client):
|
def test_expand_label(app_client):
|
||||||
response = app_client.get(
|
response = app_client.get(
|
||||||
"/fixtures/foreign_key_references.json?_shape=object"
|
"/fixtures/foreign_key_references.json?_shape=object"
|
||||||
"&_label=foreign_key_with_label"
|
"&_label=foreign_key_with_label&_size=1"
|
||||||
)
|
)
|
||||||
assert {
|
assert {
|
||||||
"1": {
|
"1": {
|
||||||
|
|
@ -1693,3 +1693,17 @@ def test_common_prefix_database_names(app_client_conflicting_database_names):
|
||||||
app_client_conflicting_database_names.get(path).body.decode("utf8")
|
app_client_conflicting_database_names.get(path).body.decode("utf8")
|
||||||
)
|
)
|
||||||
assert db_name == data["database"]
|
assert db_name == data["database"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_null_foreign_keys_are_not_expanded(app_client):
|
||||||
|
response = app_client.get(
|
||||||
|
"/fixtures/foreign_key_references.json?_shape=array&_labels=on"
|
||||||
|
)
|
||||||
|
assert [
|
||||||
|
{
|
||||||
|
"pk": "1",
|
||||||
|
"foreign_key_with_label": {"value": "1", "label": "hello"},
|
||||||
|
"foreign_key_with_no_label": {"value": "1", "label": "1"},
|
||||||
|
},
|
||||||
|
{"pk": "2", "foreign_key_with_label": None, "foreign_key_with_no_label": None,},
|
||||||
|
] == response.json
|
||||||
|
|
|
||||||
|
|
@ -603,7 +603,12 @@ def test_table_html_foreign_key_links(app_client):
|
||||||
'<td class="col-pk"><a href="/fixtures/foreign_key_references/1">1</a></td>',
|
'<td class="col-pk"><a href="/fixtures/foreign_key_references/1">1</a></td>',
|
||||||
'<td class="col-foreign_key_with_label"><a href="/fixtures/simple_primary_key/1">hello</a>\xa0<em>1</em></td>',
|
'<td class="col-foreign_key_with_label"><a href="/fixtures/simple_primary_key/1">hello</a>\xa0<em>1</em></td>',
|
||||||
'<td class="col-foreign_key_with_no_label"><a href="/fixtures/primary_key_multiple_columns/1">1</a></td>',
|
'<td class="col-foreign_key_with_no_label"><a href="/fixtures/primary_key_multiple_columns/1">1</a></td>',
|
||||||
]
|
],
|
||||||
|
[
|
||||||
|
'<td class="col-pk"><a href="/fixtures/foreign_key_references/2">2</a></td>',
|
||||||
|
'<td class="col-foreign_key_with_label">\xa0</td>',
|
||||||
|
'<td class="col-foreign_key_with_no_label">\xa0</td>',
|
||||||
|
],
|
||||||
]
|
]
|
||||||
assert expected == [
|
assert expected == [
|
||||||
[str(td) for td in tr.select("td")] for tr in table.select("tbody tr")
|
[str(td) for td in tr.select("td")] for tr in table.select("tbody tr")
|
||||||
|
|
@ -611,7 +616,7 @@ def test_table_html_foreign_key_links(app_client):
|
||||||
|
|
||||||
|
|
||||||
def test_table_html_disable_foreign_key_links_with_labels(app_client):
|
def test_table_html_disable_foreign_key_links_with_labels(app_client):
|
||||||
response = app_client.get("/fixtures/foreign_key_references?_labels=off")
|
response = app_client.get("/fixtures/foreign_key_references?_labels=off&_size=1")
|
||||||
assert response.status == 200
|
assert response.status == 200
|
||||||
table = Soup(response.body, "html.parser").find("table")
|
table = Soup(response.body, "html.parser").find("table")
|
||||||
expected = [
|
expected = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue