diff options
| -rw-r--r-- | fietsboek/data.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/fietsboek/data.py b/fietsboek/data.py index e288a03..1e97ada 100644 --- a/fietsboek/data.py +++ b/fietsboek/data.py @@ -382,9 +382,10 @@ class UserDataDir: class JourneyDataDir: """Manager for a single journey's data.""" - def __init__(self, journey_id: int, path: Path): + def __init__(self, journey_id: int, path: Path, *, txn: Transaction | None = None): self.journey_id = journey_id self.path = path + self.txn = txn def purge(self): """Purge all data pertaining to the journey. @@ -392,8 +393,11 @@ class JourneyDataDir: This function logs errors but raises no exception, as such it can always be used to clean up after a track. """ - if self.path.is_dir(): - shutil.rmtree(self.path, ignore_errors=False, onerror=_log_deletion_error) + if self.txn: + self.txn.purge(self.path) + else: + if self.path.is_dir(): + shutil.rmtree(self.path, ignore_errors=False, onerror=_log_deletion_error) def preview_path(self) -> Path: """Gets the path to the "preview image". @@ -407,11 +411,17 @@ class JourneyDataDir: :param data: The data of the preview image. """ - self.preview_path().write_bytes(data) + if self.txn: + self.txn.write_bytes(self.preview_path(), data) + else: + self.preview_path().write_bytes(data) def remove_preview(self): """Deletes the preview image.""" - self.preview_path().unlink() + if self.txn: + self.txn.unlink(self.preview_path()) + else: + self.preview_path().unlink() __all__ = ["generate_filename", "DataManager", "TrackDataDir", "UserDataDir", "JourneyDataDir"] |
