diff --git a/smash/web/importer/csv_subject_import_reader.py b/smash/web/importer/csv_subject_import_reader.py index 54883161816a39679abf1d6697a90e4374d21a1c..187b59aba9d98798f8630054828256aa3b80b07f 100644 --- a/smash/web/importer/csv_subject_import_reader.py +++ b/smash/web/importer/csv_subject_import_reader.py @@ -60,7 +60,12 @@ class CsvSubjectImportReader(SubjectImportReader): def get_new_date_value(self, old_value, column_name, new_value): # type: (datetime,unicode,unicode) -> datetime if old_value is None or old_value == "": - return datetime.datetime.strptime(new_value, CSV_DATE_FORMAT) + try: + result = datetime.datetime.strptime(new_value, CSV_DATE_FORMAT) + except ValueError: + logger.warn("Invalid date: " + new_value) + result = old_value + return result if new_value is None or new_value == "": return old_value logger.warn( diff --git a/smash/web/tests/data/import_date_of_birth.csv b/smash/web/tests/data/import_date_of_birth.csv new file mode 100644 index 0000000000000000000000000000000000000000..43d9adb8ac452c865ffcbdb96446f22847873c61 --- /dev/null +++ b/smash/web/tests/data/import_date_of_birth.csv @@ -0,0 +1,4 @@ +first_name,last_name,participant_id,date_born +Piotr,Gawron,Cov-000001, +Piotr,Gawron,Cov-000002,invalid +Piotr,Gawron,Cov-000003,2222-20-20 \ No newline at end of file diff --git a/smash/web/tests/importer/test_csv_subject_import_reader.py b/smash/web/tests/importer/test_csv_subject_import_reader.py index 798465180ed959ad7a5ae93415ca509eec33d85f..a80f323469577c13837ee6bf83c6ed1baebd004c 100644 --- a/smash/web/tests/importer/test_csv_subject_import_reader.py +++ b/smash/web/tests/importer/test_csv_subject_import_reader.py @@ -27,3 +27,11 @@ class TestCsvReader(TestCase): self.assertEqual(2020, study_subject.subject.date_born.year) self.assertIsNotNone(study_subject.study) + + def test_load_problematic_dates(self): + filename = get_resource_path('import_date_of_birth.csv') + study_subjects = CsvSubjectImportReader().load_data(filename) + self.assertEqual(3, len(study_subjects)) + self.assertIsNone(study_subjects[0].subject.date_born) + self.assertIsNone(study_subjects[1].subject.date_born) + self.assertIsNone(study_subjects[2].subject.date_born)