backups: retention reads the key the settings page actually writes

get_setting on BasePlugin namespaces what it reads to plugin.backups.<key>,
while get_settings_defaults declares - and the settings page writes - the bare
key. So the retention read never found the operator's value and always fell back
to 0, and 0 means keep everything. Retention was configurable in the UI and did
nothing. It is the only place in the codebase using the namespaced helper.

The share root also stops shipping one site's file server as its default. That
put a site's internal topology in a bundled plugin and in the public mirror, and
pointed a second site at a server it cannot reach. Blank now, per ADR-015, and a
share kind with no configured root returns nothing rather than composing a path
from somebody else's hostname - a path built on an empty root is not a lesser
answer, it is a wrong one.
This commit is contained in:
cproudlock
2026-08-14 13:47:19 -04:00
parent 838932a72d
commit 4d6ab741cc
4 changed files with 59 additions and 15 deletions

View File

@@ -40,7 +40,7 @@ def _sitezone():
Same lookup the notifications plugin uses. A stored timestamp is UTC, so
anything rendered server-side has to be converted or it shows the wrong
wall clock for the site - four hours out at West Jefferson.
wall clock for the site - four hours out at the reference site.
"""
from shopdb.api import Setting
row = Setting.query.filter_by(key='site_timezone').first()