From 7755167036df2308ff334b955042901577bd164c Mon Sep 17 00:00:00 2001 From: islean Date: Wed, 9 Aug 2023 16:32:05 +0200 Subject: [PATCH 1/5] Functionality for updating archiving/retrival task ids --- housekeeper/store/api/handlers/update.py | 27 +++++++++++++------- tests/conftest.py | 6 +++++ tests/store/handlers/test_updatehandler.py | 29 ++++++++++++++++++++++ 3 files changed, 53 insertions(+), 9 deletions(-) diff --git a/housekeeper/store/api/handlers/update.py b/housekeeper/store/api/handlers/update.py index c7e5c93b..782612b2 100644 --- a/housekeeper/store/api/handlers/update.py +++ b/housekeeper/store/api/handlers/update.py @@ -1,19 +1,14 @@ """ This module handles updating entries in the store/database. """ -from datetime import datetime import logging +from datetime import datetime from typing import List -from sqlalchemy.orm import Session - - from housekeeper.store.api.handlers.base import BaseHandler -from housekeeper.store.filters.archive_filters import ( - apply_archive_filter, - ArchiveFilter, -) -from housekeeper.store.models import Archive +from housekeeper.store.filters.archive_filters import ArchiveFilter, apply_archive_filter +from housekeeper.store.models import Archive, File +from sqlalchemy.orm import Session LOG = logging.getLogger(__name__) @@ -59,3 +54,17 @@ def update_finished_retrieval_task(self, retrieval_task_id: int) -> None: ).all() for archive in completed_archives: self.update_retrieval_time_stamp(archive=archive) + + @staticmethod + def update_retrieval_task_id(file: File, retrieval_task_id: int): + """Sets the retrieval_task_id in the Archive entry for the provided file.""" + archive: Archive = file.archive + if archive: + archive.retrieval_task_id = retrieval_task_id + + @staticmethod + def update_archiving_task_id(file: File, archiving_task_id: int): + """Sets the archiving_task_id in the Archive entry for the provided file.""" + archive: Archive = file.archive + if archive: + archive.archiving_task_id = archiving_task_id diff --git a/tests/conftest.py b/tests/conftest.py index 4061f8cb..12607bfe 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -78,6 +78,12 @@ def fixture_archiving_task_id() -> int: return 1234 +@pytest.fixture(scope="function", name="new_archiving_task_id") +def fixture_new_archiving_task_id() -> int: + """Return a new id of an archiving task.""" + return 1235 + + @pytest.fixture(scope="function", name="retrieval_task_id") def fixture_retrieval_task_id() -> int: """Return an id of a retrieval task.""" diff --git a/tests/store/handlers/test_updatehandler.py b/tests/store/handlers/test_updatehandler.py index c0bd2682..79fbb13d 100644 --- a/tests/store/handlers/test_updatehandler.py +++ b/tests/store/handlers/test_updatehandler.py @@ -94,3 +94,32 @@ def test_update_finished_retrieval_task( assert archive.retrieved_at assert second_archive.retrieved_at assert archive.retrieved_at.minute == second_archive.retrieved_at.minute + + +def test_update_retrieval_task_id(archive: Archive, retrieval_task_id: int, populated_store: store): + """Tests updating the retrieved_at timestamp on a given archive when there already is one.""" + # GIVEN an Archive with no retrieval_task_id + assert not archive.retrieval_task_id + + # WHEN updating the retrieval task id + populated_store.update_retrieval_task_id(file=archive.file, retrieval_task_id=retrieval_task_id) + + # THEN the retrieval task id should be set + assert archive.retrieval_task_id == retrieval_task_id + + +def test_update_archiving_task_id( + archive: Archive, new_archiving_task_id: int, populated_store: store +): + """Tests updating the archiving_task_od on a given archive when there already is one. + Necessary for retrieval and rearchiving.""" + # GIVEN an Archive with an old archiving_task_id + assert archive.archiving_task_id != new_archiving_task_id + + # WHEN updating the archiving_task_id + populated_store.update_archiving_task_id( + file=archive.file, archiving_task_id=new_archiving_task_id + ) + + # THEN the retrieval task id should be set + assert archive.archiving_task_id == new_archiving_task_id From e178d8d3719c68eeb975ebb28bb36c7500fb2c0a Mon Sep 17 00:00:00 2001 From: islean Date: Wed, 9 Aug 2023 16:34:08 +0200 Subject: [PATCH 2/5] black --- tests/store/handlers/test_updatehandler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/store/handlers/test_updatehandler.py b/tests/store/handlers/test_updatehandler.py index 79fbb13d..b6508ce4 100644 --- a/tests/store/handlers/test_updatehandler.py +++ b/tests/store/handlers/test_updatehandler.py @@ -1,4 +1,5 @@ from datetime import datetime + from housekeeper import store from housekeeper.store import Store from housekeeper.store.models import Archive From 55b0c2039590fb815a1134a1268e91543a07e7fd Mon Sep 17 00:00:00 2001 From: islean Date: Wed, 9 Aug 2023 16:47:53 +0200 Subject: [PATCH 3/5] Take archive as input instead --- housekeeper/store/api/handlers/update.py | 12 ++++-------- tests/store/handlers/test_updatehandler.py | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/housekeeper/store/api/handlers/update.py b/housekeeper/store/api/handlers/update.py index 782612b2..83849e84 100644 --- a/housekeeper/store/api/handlers/update.py +++ b/housekeeper/store/api/handlers/update.py @@ -56,15 +56,11 @@ def update_finished_retrieval_task(self, retrieval_task_id: int) -> None: self.update_retrieval_time_stamp(archive=archive) @staticmethod - def update_retrieval_task_id(file: File, retrieval_task_id: int): + def update_retrieval_task_id(archive: Archive, retrieval_task_id: int): """Sets the retrieval_task_id in the Archive entry for the provided file.""" - archive: Archive = file.archive - if archive: - archive.retrieval_task_id = retrieval_task_id + archive.retrieval_task_id = retrieval_task_id @staticmethod - def update_archiving_task_id(file: File, archiving_task_id: int): + def update_archiving_task_id(archive: Archive, archiving_task_id: int): """Sets the archiving_task_id in the Archive entry for the provided file.""" - archive: Archive = file.archive - if archive: - archive.archiving_task_id = archiving_task_id + archive.archiving_task_id = archiving_task_id diff --git a/tests/store/handlers/test_updatehandler.py b/tests/store/handlers/test_updatehandler.py index b6508ce4..e6d74217 100644 --- a/tests/store/handlers/test_updatehandler.py +++ b/tests/store/handlers/test_updatehandler.py @@ -103,7 +103,7 @@ def test_update_retrieval_task_id(archive: Archive, retrieval_task_id: int, popu assert not archive.retrieval_task_id # WHEN updating the retrieval task id - populated_store.update_retrieval_task_id(file=archive.file, retrieval_task_id=retrieval_task_id) + populated_store.update_retrieval_task_id(archive=archive, retrieval_task_id=retrieval_task_id) # THEN the retrieval task id should be set assert archive.retrieval_task_id == retrieval_task_id @@ -119,7 +119,7 @@ def test_update_archiving_task_id( # WHEN updating the archiving_task_id populated_store.update_archiving_task_id( - file=archive.file, archiving_task_id=new_archiving_task_id + archive=archive, archiving_task_id=new_archiving_task_id ) # THEN the retrieval task id should be set From a41ff48535ab1b782dd000fa5e4f37c134d7ac87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isak=20Ohlsson=20=C3=85ngnell?= <40887124+islean@users.noreply.github.com> Date: Thu, 10 Aug 2023 09:35:20 +0200 Subject: [PATCH 4/5] Update housekeeper/store/api/handlers/update.py Co-authored-by: ChristianOertlin --- housekeeper/store/api/handlers/update.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/housekeeper/store/api/handlers/update.py b/housekeeper/store/api/handlers/update.py index 83849e84..ce061f44 100644 --- a/housekeeper/store/api/handlers/update.py +++ b/housekeeper/store/api/handlers/update.py @@ -58,7 +58,7 @@ def update_finished_retrieval_task(self, retrieval_task_id: int) -> None: @staticmethod def update_retrieval_task_id(archive: Archive, retrieval_task_id: int): """Sets the retrieval_task_id in the Archive entry for the provided file.""" - archive.retrieval_task_id = retrieval_task_id + archive.retrieval_task_id: int = retrieval_task_id @staticmethod def update_archiving_task_id(archive: Archive, archiving_task_id: int): From e4028a3ca50370c061338de6c97e79c2e9e2a482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isak=20Ohlsson=20=C3=85ngnell?= <40887124+islean@users.noreply.github.com> Date: Thu, 10 Aug 2023 09:35:34 +0200 Subject: [PATCH 5/5] Update housekeeper/store/api/handlers/update.py Co-authored-by: ChristianOertlin --- housekeeper/store/api/handlers/update.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/housekeeper/store/api/handlers/update.py b/housekeeper/store/api/handlers/update.py index ce061f44..911554ca 100644 --- a/housekeeper/store/api/handlers/update.py +++ b/housekeeper/store/api/handlers/update.py @@ -63,4 +63,4 @@ def update_retrieval_task_id(archive: Archive, retrieval_task_id: int): @staticmethod def update_archiving_task_id(archive: Archive, archiving_task_id: int): """Sets the archiving_task_id in the Archive entry for the provided file.""" - archive.archiving_task_id = archiving_task_id + archive.archiving_task_id: int = archiving_task_id