Backups: a revision chain belongs to a PC, not just a machine

This commit is contained in:
2026-08-10 15:03:00 -04:00
parent d40be9ca68
commit 28b1dfb89e
6 changed files with 376 additions and 16 deletions

View File

@@ -27,6 +27,7 @@ from shopdb.api import (
from ..models import BackupRevision
from ..models.backup import _utciso
from ..services.registry import REGISTRY, getkind
from ..services.retention import samesource
backups_bp = Blueprint('backups', __name__)
@@ -278,9 +279,13 @@ def diff_revision(backuprevisionid):
if againstid:
other = db.session.get(BackupRevision, againstid)
else:
# The previous revision FROM THE SAME PC. Several PCs can share a
# machine number, and diffing across them reported one device's COM port
# as a change on another, which is not a change at all.
other = (db.session.query(BackupRevision)
.filter(BackupRevision.assetid == revision.assetid,
BackupRevision.backupkind == revision.backupkind,
samesource(revision.sourcehostname),
BackupRevision.backuprevisionid < revision.backuprevisionid)
.order_by(BackupRevision.backuprevisionid.desc())
.first())