Skip to content

Commit ce09a75

Browse files
fix: issue with si filename handling when the filename contains special chars
1 parent ee33dec commit ce09a75

File tree

3 files changed

+42
-15
lines changed

3 files changed

+42
-15
lines changed

src/dve/core_engine/models.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import os
99
import uuid
1010
from collections.abc import MutableMapping
11-
from pathlib import Path, PurePath
11+
from pathlib import Path
1212
from typing import Any, Optional
1313

1414
from pydantic import UUID4, BaseModel, Field, FilePath, root_validator, validator
@@ -64,16 +64,9 @@ class SubmissionInfo(AuditRecord):
6464
datetime_received: Optional[dt.datetime] = None # type: ignore
6565
"""The datetime the file was received."""
6666

67-
@validator("file_name")
68-
def _ensure_metadata_extension_removed(cls, filename): # pylint: disable=no-self-argument
69-
path = PurePath(filename)
70-
return path.stem
71-
7267
@validator("file_extension")
7368
def _ensure_just_file_stem(cls, extension: str): # pylint: disable=no-self-argument
74-
if "." in extension:
75-
return extension.split(".")[-1]
76-
return extension
69+
return extension.rsplit(".", 1)[-1]
7770

7871
@property
7972
def file_name_with_ext(self):

tests/features/steps/steps_pipeline.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def submit_file_for_processing(context: Context, dataset: str, file_name: str):
219219
sub_info = {
220220
"submission_id": uuid4().hex,
221221
"dataset_id": dataset,
222-
"file_name": file_name,
222+
"file_name": file_name.rsplit(".", 1)[0],
223223
"file_extension": Path(file_name).suffix,
224224
"reporting_period_start": "2025-11-01 00:00:00",
225225
"reporting_period_end": "2025-11-30 23:59:59"

tests/test_core_engine/test_models.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"submitted": {
1919
"submission_id": CONSTANT_SUBMISSION_ID,
2020
"dataset_id": "test0",
21-
"file_name": "my_file.csv",
21+
"file_name": "my_file",
2222
"file_extension": "csv",
2323
},
2424
"expected": {
@@ -35,13 +35,13 @@
3535
"submitted": {
3636
"submission_id": CONSTANT_SUBMISSION_ID,
3737
"dataset_id": "test1",
38-
"file_name": "my_file.csv.csv",
39-
"file_extension": "csv",
38+
"file_name": "my_file",
39+
"file_extension": ".csv.csv",
4040
},
4141
"expected": {
4242
"submission_id": CONSTANT_SUBMISSION_ID,
4343
"dataset_id": "test1",
44-
"file_name": "my_file.csv",
44+
"file_name": "my_file",
4545
"file_extension": "csv",
4646
},
4747
},
@@ -52,7 +52,7 @@
5252
"submitted": {
5353
"submission_id": CONSTANT_SUBMISSION_ID,
5454
"dataset_id": "test2",
55-
"file_name": "my_file.xml",
55+
"file_name": "my_file",
5656
"file_extension": "csv.csv.xml",
5757
},
5858
"expected": {
@@ -63,6 +63,40 @@
6363
},
6464
},
6565
),
66+
# submission with multiple file extensions
67+
(
68+
{
69+
"submitted": {
70+
"submission_id": CONSTANT_SUBMISSION_ID,
71+
"dataset_id": "test2",
72+
"file_name": "my.file.perfect",
73+
"file_extension": "csv",
74+
},
75+
"expected": {
76+
"submission_id": CONSTANT_SUBMISSION_ID,
77+
"dataset_id": "test2",
78+
"file_name": "my.file.perfect",
79+
"file_extension": "csv",
80+
},
81+
},
82+
),
83+
# submission with multiple file extensions
84+
(
85+
{
86+
"submitted": {
87+
"submission_id": CONSTANT_SUBMISSION_ID,
88+
"dataset_id": "test2",
89+
"file_name": "m_y%fil\ne.perfect",
90+
"file_extension": "csv",
91+
},
92+
"expected": {
93+
"submission_id": CONSTANT_SUBMISSION_ID,
94+
"dataset_id": "test2",
95+
"file_name": "m_y%fil\ne.perfect",
96+
"file_extension": "csv",
97+
},
98+
},
99+
),
66100
],
67101
)
68102
def test_submission_info( # pylint: disable=missing-function-docstring

0 commit comments

Comments
 (0)