Fixed display of database color

Closes #2139, closes #2119
This commit is contained in:
Simon Willison 2023-08-10 22:16:19 -07:00
commit 4535568f2c
11 changed files with 39 additions and 18 deletions

View file

@ -102,9 +102,6 @@ class BaseView:
response.body = b""
return response
def database_color(self, database):
return "ff0000"
async def method_not_allowed(self, request):
if (
request.path.endswith(".json")
@ -150,7 +147,6 @@ class BaseView:
template_context = {
**context,
**{
"database_color": self.database_color,
"select_templates": [
f"{'*' if template_name == template.name else ''}{template_name}"
for template_name in templates

View file

@ -146,6 +146,7 @@ class DatabaseView(View):
template = datasette.jinja_env.select_template(templates)
context = {
**json_data,
"database_color": db.color,
"database_actions": database_actions,
"show_hidden": request.args.get("_show_hidden"),
"editable": True,
@ -154,7 +155,6 @@ class DatabaseView(View):
and not db.is_mutable
and not db.is_memory,
"attached_databases": attached_databases,
"database_color": lambda _: "#ff0000",
"alternate_url_json": alternate_url_json,
"select_templates": [
f"{'*' if template_name == template.name else ''}{template_name}"
@ -179,6 +179,7 @@ class DatabaseView(View):
@dataclass
class QueryContext:
database: str = field(metadata={"help": "The name of the database being queried"})
database_color: str = field(metadata={"help": "The color of the database"})
query: dict = field(
metadata={"help": "The SQL query object containing the `sql` string"}
)
@ -232,9 +233,6 @@ class QueryContext:
show_hide_hidden: str = field(
metadata={"help": "Hidden input field for the _show_sql parameter"}
)
database_color: Callable = field(
metadata={"help": "Function that returns a color for a given database name"}
)
table_columns: dict = field(
metadata={"help": "Dictionary of table name to list of column names"}
)
@ -689,6 +687,7 @@ class QueryView(View):
template,
QueryContext(
database=database,
database_color=db.color,
query={
"sql": sql,
"params": params,
@ -721,7 +720,6 @@ class QueryView(View):
),
show_hide_hidden=markupsafe.Markup(show_hide_hidden),
metadata=canned_query or metadata,
database_color=lambda _: "#ff0000",
alternate_url_json=alternate_url_json,
select_templates=[
f"{'*' if template_name == template.name else ''}{template_name}"

View file

@ -105,9 +105,7 @@ class IndexView(BaseView):
{
"name": name,
"hash": db.hash,
"color": db.hash[:6]
if db.hash
else hashlib.md5(name.encode("utf8")).hexdigest()[:6],
"color": db.color,
"path": self.ds.urls.database(name),
"tables_and_views_truncated": tables_and_views_truncated,
"tables_and_views_more": (len(visible_tables) + len(views))

View file

@ -18,7 +18,8 @@ class RowView(DataView):
async def data(self, request, default_labels=False):
resolved = await self.ds.resolve_row(request)
database = resolved.db.name
db = resolved.db
database = db.name
table = resolved.table
pk_values = resolved.pk_values
@ -60,6 +61,7 @@ class RowView(DataView):
"foreign_key_tables": await self.foreign_key_tables(
database, table, pk_values
),
"database_color": db.color,
"display_columns": display_columns,
"display_rows": display_rows,
"custom_table_templates": [

View file

@ -1408,7 +1408,7 @@ async def table_view_data(
return table_name
async def extra_database_color():
return lambda _: "ff0000"
return db.color
async def extra_form_hidden_args():
form_hidden_args = []