Show error if --setting hash_urls 1 used, refs #1661

This commit is contained in:
Simon Willison 2022-03-18 17:19:31 -07:00
commit 8658c66438
3 changed files with 35 additions and 8 deletions

View file

@ -118,11 +118,6 @@ SETTINGS = (
50,
"Time limit for calculating a suggested facet",
),
Setting(
"hash_urls",
False,
"Include DB file contents hash in URLs, for far-future caching",
),
Setting(
"allow_facet",
True,
@ -177,6 +172,16 @@ SETTINGS = (
),
Setting("base_url", "/", "Datasette URLs should use this base path"),
)
OBSOLETE_SETTINGS = {
option.name: option
for option in (
Setting(
"hash_urls",
False,
"The hash_urls setting has been removed, try the datasette-hashed-urls plugin instead",
),
)
}
DEFAULT_SETTINGS = {option.name: option.default for option in SETTINGS}

View file

@ -12,7 +12,14 @@ from subprocess import call
import sys
from runpy import run_module
import webbrowser
from .app import Datasette, DEFAULT_SETTINGS, SETTINGS, SQLITE_LIMIT_ATTACHED, pm
from .app import (
OBSOLETE_SETTINGS,
Datasette,
DEFAULT_SETTINGS,
SETTINGS,
SQLITE_LIMIT_ATTACHED,
pm,
)
from .utils import (
StartupError,
check_connection,
@ -50,8 +57,12 @@ class Config(click.ParamType):
return
name, value = config.split(":", 1)
if name not in DEFAULT_SETTINGS:
if name in OBSOLETE_SETTINGS:
msg = OBSOLETE_SETTINGS[name].help
else:
msg = f"{name} is not a valid option (--help-settings to see all)"
self.fail(
f"{name} is not a valid option (--help-settings to see all)",
msg,
param,
ctx,
)
@ -83,8 +94,12 @@ class Setting(CompositeParamType):
def convert(self, config, param, ctx):
name, value = config
if name not in DEFAULT_SETTINGS:
if name in OBSOLETE_SETTINGS:
msg = OBSOLETE_SETTINGS[name].help
else:
msg = f"{name} is not a valid option (--help-settings to see all)"
self.fail(
f"{name} is not a valid option (--help-settings to see all)",
msg,
param,
ctx,
)

View file

@ -310,3 +310,10 @@ def test_help_settings():
result = runner.invoke(cli, ["--help-settings"])
for setting in SETTINGS:
assert setting.name in result.output
def test_help_error_on_hash_urls_setting():
runner = CliRunner()
result = runner.invoke(cli, ["--setting", "hash_urls", 1])
assert result.exit_code == 2
assert 'The hash_urls setting has been removed' in result.output