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):