diff --git a/smash/web/importer/importer.py b/smash/web/importer/importer.py index bdab56472685f5e07197f81c89df20201e99ab3a..2639f670e2695bda2f4e1f2dd1d981d4e1fe5164 100644 --- a/smash/web/importer/importer.py +++ b/smash/web/importer/importer.py @@ -15,23 +15,28 @@ class Importer(object): # type: (str, SubjectImportReader) -> None self.filename = filename self.reader = reader - self.added_count = 0; + self.added_count = 0 + self.problematic_count = 0 def execute(self): - self.added_count = 0; + self.added_count = 0 + self.problematic_count = 0 study_subjects = self.reader.load_data(self.filename) for study_subject in study_subjects: try: if study_subject.study is None: + self.problematic_count += 1 logger.warn("Empty study found. Ignoring") continue elif study_subject.study.id != GLOBAL_STUDY_ID: + self.problematic_count += 1 logger.warn("Empty study found. Ignoring: " + study_subject.study.id) continue else: self.import_study_subject(study_subject) except: + self.problematic_count += 1 traceback.print_exc(file=sys.stdout) logger.error("Problem with importing study subject: " + study_subject.screening_number) diff --git a/smash/web/tests/importer/test_importer.py b/smash/web/tests/importer/test_importer.py index 5eb6ba5997e8ee354cb4ca82e8e68f4dedf29b9b..320e6bf791d82ff29aef8937e14acc887a2a4184 100644 --- a/smash/web/tests/importer/test_importer.py +++ b/smash/web/tests/importer/test_importer.py @@ -37,3 +37,35 @@ class TestImporter(TestCase): self.assertEqual(study_subject_counter + 1, StudySubject.objects.count()) self.assertEqual(1, importer.added_count) + self.assertEqual(0, importer.problematic_count) + + def test_import_invalid(self): + study_subjects = [] + study_subject = StudySubject() + study_subject.screening_number = "Cov-123456" + study_subject.study = self.study + study_subjects.append(study_subject) + + importer = Importer(filename="empty.csv", reader=MockReader(study_subjects)) + study_subject_counter = StudySubject.objects.count() + importer.execute() + + self.assertEqual(study_subject_counter, StudySubject.objects.count()) + + self.assertEqual(0, importer.added_count) + self.assertEqual(1, importer.problematic_count) + + def test_import_no_study(self): + study_subjects = [] + study_subject = StudySubject() + study_subject.screening_number = "Cov-123456" + study_subjects.append(study_subject) + + importer = Importer(filename="empty.csv", reader=MockReader(study_subjects)) + study_subject_counter = StudySubject.objects.count() + importer.execute() + + self.assertEqual(study_subject_counter, StudySubject.objects.count()) + + self.assertEqual(0, importer.added_count) + self.assertEqual(1, importer.problematic_count)