From 490f0f8e15a3f3f1c4281bf1467a3a347d4e04cd Mon Sep 17 00:00:00 2001 From: Andy Kuny Date: Tue, 16 Jan 2024 10:40:01 -0500 Subject: [PATCH] Refine generate_filename method and test --- nad_ch/domain/entities.py | 11 +++++++++-- nad_ch/use_cases.py | 2 +- tests/domain/test_entities.py | 12 ++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 tests/domain/test_entities.py diff --git a/nad_ch/domain/entities.py b/nad_ch/domain/entities.py index 0137374..48f77a6 100644 --- a/nad_ch/domain/entities.py +++ b/nad_ch/domain/entities.py @@ -1,4 +1,6 @@ import datetime +import os +import re class Entity: @@ -41,7 +43,12 @@ def __repr__(self): (created: {self.created_at}; updated: {self.updated_at})" @staticmethod - def generate_filename(provider: DataProvider) -> str: + def generate_filename(file_path: str, provider: DataProvider) -> str: + s = re.sub(r'\W+', '_', provider.name) + s = s.lower() + s = s.strip('_') + formatted_provider_name = re.sub(r'_+', '_', s) datetime_str = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") - filename = f"{provider.name}_{datetime_str}.zip" + _, file_extension = os.path.splitext(file_path) + filename = f"{formatted_provider_name}_{datetime_str}{file_extension}" return filename diff --git a/nad_ch/use_cases.py b/nad_ch/use_cases.py index 23d6be7..56ff854 100644 --- a/nad_ch/use_cases.py +++ b/nad_ch/use_cases.py @@ -46,7 +46,7 @@ def ingest_data_submission( return try: - filename = DataSubmission.generate_filename(provider) + filename = DataSubmission.generate_filename(file_path, provider) ctx.storage.upload(file_path, filename) submission = DataSubmission(filename, provider) diff --git a/tests/domain/test_entities.py b/tests/domain/test_entities.py new file mode 100644 index 0000000..0e530c8 --- /dev/null +++ b/tests/domain/test_entities.py @@ -0,0 +1,12 @@ +import datetime +from nad_ch.domain.entities import DataProvider, DataSubmission + + +def test_data_submission_generates_filename(): + provider = DataProvider("Some Provider") + filename = DataSubmission.generate_filename("someupload.zip", provider) + todays_date = datetime.datetime.now().strftime("%Y%m%d") + print(filename) + assert filename.startswith("some_provider") + assert todays_date in filename + assert filename.endswith(".zip")