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:
@@ -20,6 +20,7 @@ from typing import Dict, List, Optional, Type
|
||||
from flask import Flask, Blueprint
|
||||
|
||||
from shopdb.plugins.base import BasePlugin, PluginMeta
|
||||
from shopdb.api import Setting
|
||||
|
||||
from .api import backups_bp
|
||||
from .models import BackupRevision
|
||||
@@ -165,7 +166,10 @@ class BackupsPlugin(BasePlugin):
|
||||
'valuetype': 'string',
|
||||
'category': 'backups',
|
||||
'description': 'UNC root that opaque (non-JSON) backups are '
|
||||
'written under by the collecting PC. Site-specific.',
|
||||
'written under by the collecting PC, e.g. '
|
||||
'\\\\fileserver\\shopfloor\\backups. Blank until '
|
||||
'the site sets it: no default can be right at '
|
||||
'more than one site (ADR-015).',
|
||||
},
|
||||
{
|
||||
'key': 'backups_staledays',
|
||||
@@ -395,8 +399,14 @@ class BackupsPlugin(BasePlugin):
|
||||
|
||||
pruned = prune(
|
||||
assetid, kindkey,
|
||||
retentioncount=self.get_setting('backups_retentioncount', 0),
|
||||
retentiondays=self.get_setting('backups_retentiondays', 0),
|
||||
# Setting.get, NOT self.get_setting. The BasePlugin helper
|
||||
# namespaces what it reads to `plugin.backups.<key>`, while
|
||||
# get_settings_defaults declares - and the settings page writes -
|
||||
# the bare key. So this read never found the value an operator had
|
||||
# set, always fell back to 0, and 0 means "keep everything": the
|
||||
# retention policy was configurable in the UI and did nothing.
|
||||
retentioncount=Setting.get('backups_retentioncount', 0),
|
||||
retentiondays=Setting.get('backups_retentiondays', 0),
|
||||
)
|
||||
if pruned:
|
||||
warnings.append('pruned {} old revision(s) per retention policy'
|
||||
|
||||
Reference in New Issue
Block a user