diff --git a/plinth/modules/backups/repository.py b/plinth/modules/backups/repository.py index 4d742f21c..8ce08b9a4 100644 --- a/plinth/modules/backups/repository.py +++ b/plinth/modules/backups/repository.py @@ -3,6 +3,7 @@ import abc import contextlib +import datetime import io import logging import os @@ -121,6 +122,12 @@ class BaseBorgRepository(abc.ABC): """Return list of archives in this repository.""" archives = privileged.list_repo( self.borg_path, self._get_encryption_passpharse())['archives'] + for archive in archives: + archive['time'] = datetime.datetime.strptime( + archive['time'], '%Y-%m-%dT%H:%M:%S.%f') + archive['start'] = datetime.datetime.strptime( + archive['start'], '%Y-%m-%dT%H:%M:%S.%f') + return sorted(archives, key=lambda archive: archive['start'], reverse=True) diff --git a/plinth/modules/backups/schedule.py b/plinth/modules/backups/schedule.py index 3a347ef6c..1d89a0e73 100644 --- a/plinth/modules/backups/schedule.py +++ b/plinth/modules/backups/schedule.py @@ -242,14 +242,11 @@ class Schedule: archive['comment'] = comment - start_time = datetime.strptime(archive['start'], - '%Y-%m-%dT%H:%M:%S.%f') - if start_time > now: + if archive['start'] > now: # This backup was taken when clock was set in future. Ignore it # to ensure backups continue to be taken. continue - archive['start'] = start_time scheduled_archives.append(archive) return scheduled_archives diff --git a/plinth/modules/backups/tests/test_schedule.py b/plinth/modules/backups/tests/test_schedule.py index dd6ae0847..092a2f396 100644 --- a/plinth/modules/backups/tests/test_schedule.py +++ b/plinth/modules/backups/tests/test_schedule.py @@ -84,16 +84,12 @@ def _get_archives_from_test_data(data): if isinstance(archive_time, str): archive_time = datetime.strptime(archive_time, '%Y-%m-%d %H:%M:%S+0000') + + comment = json.dumps({'type': 'scheduled', 'periods': item['periods']}) archive = { - 'comment': - json.dumps({ - 'type': 'scheduled', - 'periods': item['periods'] - }), - 'start': - archive_time.strftime('%Y-%m-%dT%H:%M:%S.%f'), - 'name': - f'archive-{index}' + 'comment': comment, + 'start': archive_time, + 'name': f'archive-{index}' } archives.append(archive)