Skip to content

Commit 0d5f3f7

Browse files
committed
Refactor extended attributes
1 parent a7470c3 commit 0d5f3f7

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

lambdas/filenameprocessor/src/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
VACCINE_TYPE_TO_DISEASES_HASH_KEY = "vacc_to_diseases"
1919
ODS_CODE_TO_SUPPLIER_SYSTEM_HASH_KEY = "ods_code_to_supplier"
20+
EXTENDED_ATTRIBUTES_PREFIXES = "Vaccination_Extended_Attributes"
2021

2122
ERROR_TYPE_TO_STATUS_CODE_MAP = {
2223
VaccineTypePermissionsError: 403,

lambdas/filenameprocessor/src/file_name_processor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from common.models.errors import UnhandledAuditTableError
1717
from constants import (
1818
ERROR_TYPE_TO_STATUS_CODE_MAP,
19+
EXTENDED_ATTRIBUTES_PREFIXES,
1920
SOURCE_BUCKET_NAME,
2021
FileNotProcessedReason,
2122
FileStatus,
@@ -76,10 +77,12 @@ def handle_record(record) -> dict:
7677
message_id = str(uuid4())
7778
s3_response = get_s3_client().get_object(Bucket=bucket_name, Key=file_key)
7879
created_at_formatted_string, expiry_timestamp = get_creation_and_expiry_times(s3_response)
80+
if file_key.startswith(EXTENDED_ATTRIBUTES_PREFIXES):
81+
pass
82+
else:
83+
vaccine_type, supplier = validate_file_key(file_key)
7984

80-
vaccine_type, supplier = validate_file_key(file_key)
8185
permissions = validate_vaccine_type_permissions(vaccine_type=vaccine_type, supplier=supplier)
82-
8386
queue_name = f"{supplier}_{vaccine_type}"
8487
upsert_audit_table(
8588
message_id,

lambdas/filenameprocessor/tests/test_lambda_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ def test_lambda_handler_new_file_success_and_first_in_queue(self, mock_get_redis
195195
mock_redis.hkeys = Mock(return_value=all_vaccine_types_in_this_test_file)
196196
mock_get_redis_client.return_value = mock_redis
197197

198-
test_cases = [MockFileDetails.emis_flu, MockFileDetails.ravs_rsv_1]
198+
test_cases = [MockFileDetails.emis_flu, MockFileDetails.ravs_rsv_1, MockFileDetails.extended_attributes_file]
199199
for file_details in test_cases:
200200
with self.subTest(file_details.name):
201201
# Set up the file in the source bucket

lambdas/filenameprocessor/tests/utils_for_tests/values_for_tests.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,18 @@ class FileDetails:
2727
vaccine type.
2828
"""
2929

30-
def __init__(self, supplier: str, vaccine_type: str, ods_code: str, file_number: int = 1):
31-
self.vaccine_type = vaccine_type.upper()
32-
self.ods_code = ods_code.upper()
33-
self.supplier = supplier.upper()
30+
def __init__(
31+
self,
32+
supplier: str = "RAVS",
33+
vaccine_type: str = None,
34+
ods_code: str = None,
35+
file_number: int = 1,
36+
organization_code: str = None,
37+
):
38+
self.vaccine_type = vaccine_type.upper() if vaccine_type else None
39+
self.ods_code = ods_code.upper() if ods_code else "X8E5B"
40+
self.organization_code = organization_code
41+
self.supplier = supplier.upper() if supplier else None
3442
self.queue_name = f"{self.supplier}_{self.vaccine_type}"
3543

3644
self.created_at_formatted_string = f"200{file_number}0101T00000000"
@@ -39,7 +47,14 @@ def __init__(self, supplier: str, vaccine_type: str, ods_code: str, file_number:
3947
self.name = f"{self.vaccine_type}/ {self.supplier} file"
4048

4149
file_date_and_time_string = f"20000101T0000000{file_number}"
42-
self.file_key = f"{vaccine_type}_Vaccinations_v5_{ods_code}_{file_date_and_time_string}.csv"
50+
extended_attributes_prefix = "Vaccination_Extended_Attributes"
51+
if self.vaccine_type.startswith(extended_attributes_prefix):
52+
file_key = f"{extended_attributes_prefix}_v1_5_{organization_code}_{file_date_and_time_string}.csv"
53+
else:
54+
file_key = f"{vaccine_type}_Vaccinations_v5_{ods_code}_{file_date_and_time_string}.csv"
55+
56+
self.file_key = file_key
57+
4358
self.ack_file_key = f"ack/{self.file_key[:-4]}_InfAck_{self.created_at_formatted_string}.csv"
4459

4560
self.permissions_list = [f"{self.vaccine_type}_FULL"]
@@ -78,6 +93,9 @@ class MockFileDetails:
7893
emis_flu = FileDetails("EMIS", "FLU", "YGM41")
7994
emis_rsv = FileDetails("EMIS", "RSV", "YGM41")
8095
ravs_flu = FileDetails("RAVS", "FLU", "X8E5B")
96+
extended_attributes_file = FileDetails(
97+
vaccine_type="Vaccination_Extended_Attributes", file_number=1, organization_code="RJ123"
98+
)
8199

82100

83101
MOCK_FILE_HEADERS = (

0 commit comments

Comments
 (0)