From bf6b0f918de4aeee7c1036ac975ce2fb23237da7 Mon Sep 17 00:00:00 2001
From: Simon Willison
Date: Sun, 10 Mar 2019 14:37:11 -0700
Subject: [PATCH] about and about_url metadata options
---
datasette/app.py | 3 +++
datasette/cli.py | 2 ++
datasette/publish/common.py | 2 ++
datasette/publish/heroku.py | 4 ++++
datasette/publish/now.py | 4 ++++
datasette/templates/_description_source_license.html | 5 +++++
datasette/templates/base.html | 5 +++++
docs/datasette-package-help.txt | 2 ++
docs/datasette-publish-heroku-help.txt | 2 ++
docs/datasette-publish-now-help.txt | 2 ++
tests/fixtures.py | 2 ++
tests/test_html.py | 6 ++++--
12 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/datasette/app.py b/datasette/app.py
index 3a74a5e5..453ce5c0 100644
--- a/datasette/app.py
+++ b/datasette/app.py
@@ -267,6 +267,9 @@ class Datasette:
"license": metadata.get("license") or self.metadata("license"),
"license_url": metadata.get("license_url")
or self.metadata("license_url"),
+ "about": metadata.get("about") or self.metadata("about"),
+ "about_url": metadata.get("about_url")
+ or self.metadata("about_url"),
}
)
diff --git a/datasette/cli.py b/datasette/cli.py
index 34ed0020..446456f4 100644
--- a/datasette/cli.py
+++ b/datasette/cli.py
@@ -217,6 +217,8 @@ def plugins(all, plugins_dir):
@click.option("--license_url", help="License URL for metadata")
@click.option("--source", help="Source label for metadata")
@click.option("--source_url", help="Source URL for metadata")
+@click.option("--about", help="About label for metadata")
+@click.option("--about_url", help="About URL for metadata")
def package(
files,
tag,
diff --git a/datasette/publish/common.py b/datasette/publish/common.py
index 9dd2ae9e..4cc69b4a 100644
--- a/datasette/publish/common.py
+++ b/datasette/publish/common.py
@@ -42,6 +42,8 @@ def add_common_publish_arguments_and_options(subcommand):
click.option("--license_url", help="License URL for metadata"),
click.option("--source", help="Source label for metadata"),
click.option("--source_url", help="Source URL for metadata"),
+ click.option("--about", help="About label for metadata"),
+ click.option("--about_url", help="About URL for metadata"),
)):
subcommand = decorator(subcommand)
return subcommand
diff --git a/datasette/publish/heroku.py b/datasette/publish/heroku.py
index d42f4e83..32c861cd 100644
--- a/datasette/publish/heroku.py
+++ b/datasette/publish/heroku.py
@@ -35,6 +35,8 @@ def publish_subcommand(publish):
license_url,
source,
source_url,
+ about,
+ about_url,
name,
):
fail_if_publish_binary_not_installed(
@@ -72,6 +74,8 @@ def publish_subcommand(publish):
"license_url": license_url,
"source": source,
"source_url": source_url,
+ "about": about,
+ "about_url": about_url,
},
):
app_name = None
diff --git a/datasette/publish/now.py b/datasette/publish/now.py
index bd2b051b..64a73279 100644
--- a/datasette/publish/now.py
+++ b/datasette/publish/now.py
@@ -39,6 +39,8 @@ def publish_subcommand(publish):
license_url,
source,
source_url,
+ about,
+ about_url,
name,
force,
token,
@@ -70,6 +72,8 @@ def publish_subcommand(publish):
"license_url": license_url,
"source": source,
"source_url": source_url,
+ "about": about,
+ "about_url": about_url,
},
):
now_json = {
diff --git a/datasette/templates/_description_source_license.html b/datasette/templates/_description_source_license.html
index eba4eb1a..3327706e 100644
--- a/datasette/templates/_description_source_license.html
+++ b/datasette/templates/_description_source_license.html
@@ -21,5 +21,10 @@
{% endif %}{{ metadata.source or metadata.source_url }}{% if metadata.source_url %}{% endif %}
{% endif %}
+ {% if metadata.about or metadata.about_url %}{% if metadata.license or metadata.license_url or metadata.source or metadat.source_url %}·{% endif %}
+ About: {% if metadata.about_url %}
+
+ {% endif %}{{ metadata.about or metadata.about_url }}{% if metadata.about_url %}{% endif %}
+ {% endif %}
{% endif %}
diff --git a/datasette/templates/base.html b/datasette/templates/base.html
index c766a44e..0ea41d7e 100644
--- a/datasette/templates/base.html
+++ b/datasette/templates/base.html
@@ -33,6 +33,11 @@
{% endif %}{{ metadata.source or metadata.source_url }}{% if metadata.source_url %}{% endif %}
{% endif %}
+ {% if metadata.about or metadata.about_url %}·
+ About: {% if metadata.about_url %}
+
+ {% endif %}{{ metadata.about or metadata.about_url }}{% if metadata.about_url %}{% endif %}
+ {% endif %}
{% endif %}
diff --git a/docs/datasette-package-help.txt b/docs/datasette-package-help.txt
index d0ad2d3e..39be04e9 100644
--- a/docs/datasette-package-help.txt
+++ b/docs/datasette-package-help.txt
@@ -21,4 +21,6 @@ Options:
--license_url TEXT License URL for metadata
--source TEXT Source label for metadata
--source_url TEXT Source URL for metadata
+ --about TEXT About label for metadata
+ --about_url TEXT About URL for metadata
--help Show this message and exit.
diff --git a/docs/datasette-publish-heroku-help.txt b/docs/datasette-publish-heroku-help.txt
index f82eaf3e..cd9af09b 100644
--- a/docs/datasette-publish-heroku-help.txt
+++ b/docs/datasette-publish-heroku-help.txt
@@ -16,5 +16,7 @@ Options:
--license_url TEXT License URL for metadata
--source TEXT Source label for metadata
--source_url TEXT Source URL for metadata
+ --about TEXT About label for metadata
+ --about_url TEXT About URL for metadata
-n, --name TEXT Application name to use when deploying
--help Show this message and exit.
diff --git a/docs/datasette-publish-now-help.txt b/docs/datasette-publish-now-help.txt
index a9c01f39..445c1bc7 100644
--- a/docs/datasette-publish-now-help.txt
+++ b/docs/datasette-publish-now-help.txt
@@ -16,6 +16,8 @@ Options:
--license_url TEXT License URL for metadata
--source TEXT Source label for metadata
--source_url TEXT Source URL for metadata
+ --about TEXT About label for metadata
+ --about_url TEXT About URL for metadata
-n, --name TEXT Application name to use when deploying
--force Pass --force option to now
--token TEXT Auth token to use for deploy
diff --git a/tests/fixtures.py b/tests/fixtures.py
index 16395553..a77a3f4a 100644
--- a/tests/fixtures.py
+++ b/tests/fixtures.py
@@ -133,6 +133,8 @@ METADATA = {
'license_url': 'https://github.com/simonw/datasette/blob/master/LICENSE',
'source': 'tests/fixtures.py',
'source_url': 'https://github.com/simonw/datasette/blob/master/tests/fixtures.py',
+ 'about': 'About Datasette',
+ 'about_url': 'https://github.com/simonw/datasette',
"plugins": {
"name-of-plugin": {
"depth": "root"
diff --git a/tests/test_html.py b/tests/test_html.py
index 9adfe8f2..ca6d62aa 100644
--- a/tests/test_html.py
+++ b/tests/test_html.py
@@ -744,14 +744,16 @@ def assert_querystring_equal(expected, actual):
def assert_footer_links(soup):
footer_links = soup.find('div', {'class': 'ft'}).findAll('a')
- assert 3 == len(footer_links)
- datasette_link, license_link, source_link = footer_links
+ assert 4 == len(footer_links)
+ datasette_link, license_link, source_link, about_link = footer_links
assert 'Datasette' == datasette_link.text.strip()
assert 'tests/fixtures.py' == source_link.text.strip()
assert 'Apache License 2.0' == license_link.text.strip()
+ assert 'About Datasette' == about_link.text.strip()
assert 'https://github.com/simonw/datasette' == datasette_link['href']
assert 'https://github.com/simonw/datasette/blob/master/tests/fixtures.py' == source_link['href']
assert 'https://github.com/simonw/datasette/blob/master/LICENSE' == license_link['href']
+ assert 'https://github.com/simonw/datasette' == about_link['href']
def inner_html(soup):