From 13bd3ca12ebc5ad826b14a977102d73aead73962 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 29 Jun 2020 12:57:41 +0200
Subject: [PATCH] allow to import email and address data

---
 .../importer/csv_tns_subject_import_reader.py    | 16 ++++++++++++----
 smash/web/tests/data/tns_subjects_import.csv     |  8 ++++----
 .../test_tns_csv_subject_import_reader.py        |  5 +++++
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/smash/web/importer/csv_tns_subject_import_reader.py b/smash/web/importer/csv_tns_subject_import_reader.py
index db6de854..74ee4b1a 100644
--- a/smash/web/importer/csv_tns_subject_import_reader.py
+++ b/smash/web/importer/csv_tns_subject_import_reader.py
@@ -4,8 +4,8 @@ import logging
 import codecs
 
 from subject_import_reader import SubjectImportReader
-from web.models import StudySubject, Subject, Study
-from web.models.constants import GLOBAL_STUDY_ID
+from ..models import StudySubject, Subject, Study
+from ..models.constants import GLOBAL_STUDY_ID
 
 CSV_DATE_FORMAT = "%d/%m/%Y"
 
@@ -41,6 +41,15 @@ class TnsCsvSubjectImportReader(SubjectImportReader):
             study_subject.subject.last_name = self.get_new_value(study_subject.subject.last_name, column_name, value)
         elif column_name == "donor_id":
             study_subject.screening_number = self.get_new_value(study_subject.screening_number, column_name, value)
+        elif column_name == "email":
+            study_subject.subject.email = self.get_new_value(study_subject.subject.email, column_name, value)
+        elif column_name == "address":
+            study_subject.subject.address = self.get_new_value(study_subject.subject.address, column_name, value)
+        elif column_name == "postal_code":
+            study_subject.subject.postal_code = self.get_new_value(study_subject.subject.postal_code, column_name,
+                                                                   value)
+        elif column_name == "city":
+            study_subject.subject.city = self.get_new_value(study_subject.subject.city, column_name, value)
         elif column_name == "phonenr":
             study_subject.subject.phone_number = self.get_new_value(study_subject.subject.phone_number, column_name,
                                                                     value)
@@ -86,7 +95,6 @@ class TnsCsvSubjectImportReader(SubjectImportReader):
             "). Latest value will be used")
         return datetime.datetime.strptime(new_value, CSV_DATE_FORMAT)
 
+
 def remove_bom(line):
     return line[3:] if line.startswith(codecs.BOM_UTF8) else line
-
-
diff --git a/smash/web/tests/data/tns_subjects_import.csv b/smash/web/tests/data/tns_subjects_import.csv
index 05a910ed..9ac0e88a 100644
--- a/smash/web/tests/data/tns_subjects_import.csv
+++ b/smash/web/tests/data/tns_subjects_import.csv
@@ -1,4 +1,4 @@
-donor_id;firstname;lastname;dateofbirth;phonenr;treatingphysician;sig_firstname;sig_lastname;representative
-cov-000111;John;Doe;01/01/1977;555555;Gregory House;John;Doe;Mario Doe
-cov-222333;John2;Doe2;01/02/1977;621000000;Gregory House2;John2;Doe2;
-cov-444444;John2;Doe2;01/03/1977;691000000;Gregory House3;John2;Doe2;Elsa Doe
\ No newline at end of file
+donor_id;firstname;lastname;dateofbirth;phonenr;treatingphysician;sig_firstname;sig_lastname;representative;address;postal_code;city;email
+cov-000111;John;Doe;01/01/1977;555555;Gregory House;John;Doe;Mario Doe;;;;
+cov-222333;John2;Doe2;01/02/1977;621000000;Gregory House2;John2;Doe2;;5, avenue blabla;9940;Belval;john.doe@neverland.lu
+cov-444444;John2;Doe2;01/03/1977;691000000;Gregory House3;John2;Doe2;Elsa Doe;;;;
\ No newline at end of file
diff --git a/smash/web/tests/importer/test_tns_csv_subject_import_reader.py b/smash/web/tests/importer/test_tns_csv_subject_import_reader.py
index f81ec8f5..e9d46d49 100644
--- a/smash/web/tests/importer/test_tns_csv_subject_import_reader.py
+++ b/smash/web/tests/importer/test_tns_csv_subject_import_reader.py
@@ -30,6 +30,11 @@ class TestTnsCsvSubjectReader(TestCase):
         self.assertEqual("cov-222333", study_subject.screening_number)
         self.assertEqual("cov-222333", study_subject.nd_number)
         self.assertEqual("621000000", study_subject.subject.phone_number)
+        self.assertEqual("john.doe@neverland.lu", study_subject.subject.email)
+        self.assertEqual("5, avenue blabla", study_subject.subject.address)
+        self.assertEqual("9940", study_subject.subject.postal_code)
+        self.assertEqual("Belval", study_subject.subject.city)
+
         self.assertTrue("Gregory House2" in study_subject.comments)
 
         self.assertEqual(1, study_subject.subject.date_born.day)
-- 
GitLab