From e68595ba44eaf584643db05c52a37e528c9131a9 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 16 Apr 2020 09:13:53 +0200
Subject: [PATCH] data from tns should be separated by address

---
 .../importer/csv_tns_visit_import_reader.py   | 81 +++++++++++++++++--
 .../test_tns_csv_visit_import_reader.py       |  6 +-
 2 files changed, 77 insertions(+), 10 deletions(-)

diff --git a/smash/web/importer/csv_tns_visit_import_reader.py b/smash/web/importer/csv_tns_visit_import_reader.py
index 8bc4942a..b441d223 100644
--- a/smash/web/importer/csv_tns_visit_import_reader.py
+++ b/smash/web/importer/csv_tns_visit_import_reader.py
@@ -4,6 +4,7 @@ import datetime
 import logging
 import sys
 import traceback
+import codecs
 
 import pytz
 from django.conf import settings
@@ -38,7 +39,7 @@ class TnsCsvVisitImportReader:
 
         result = []
         with open(filename) as csv_file:
-            reader = csv.reader(csv_file, delimiter=';')
+            reader = csv.reader((remove_bom(line) for line in csv_file), delimiter=';')
             headers = next(reader, None)
             for row in reader:
                 try:
@@ -134,12 +135,75 @@ class TnsCsvVisitImportReader:
         text = data.get('adressofvisit', None)
         if text is None:
             text = data['lab_id']
-            if text.startswith('lab-reunis'):
-                text = u"Laboratoires réunis"
-            if text.startswith('lab-ketterthill'):
-                text = u"Ketterthill"
-            if text.startswith('lab-bionex'):
-                text = u"BioneXt"
+
+            if text.startswith('lab-reunis-1'):
+                text='Laboratoires réunis, 23 Route de Diekirch, 6555, Bollendorf-Pont'
+            if text.startswith('lab-reunis-2'):
+                text='Laboratoires réunis, 38 Rue Hiehl, 6131, Junglinster'
+            if text.startswith('lab-reunis-3'):
+                text='Laboratoires réunis, 16 Rue de la Gare, 6117, Junglinster'
+            if text.startswith('lab-reunis-4'):
+                text='Laboratoires réunis, 456 Rue de Neudorf, 2222, Luxembourg'
+            if text.startswith('lab-reunis-5'):
+                text='Laboratoires réunis, 14 Place St Michel, 7556, Mersch'
+            if text.startswith('lab-reunis-6'):
+                text='Laboratoires réunis, 2 Avenue des Bains, 5610, Mondorf-les-Bains'
+            if text.startswith('lab-reunis-7'):
+                text='Laboratoires réunis, 239 Route d\'Arlon, 8011, Strassen'
+            if text.startswith('lab-reunis-8'):
+                text='Laboratoires réunis, 123 Route de Diekirch, 7220, Walferdange'
+            if text.startswith('lab-reunis-9'):
+                text='Laboratoires réunis, 20 Rue de Luxembourg, 4220, Esch-sur-Alzette'
+            if text.startswith('lab-reunis-10'):
+                text='Laboratoires réunis, 124 Avenue de Luxembourg, 4940, Bascharage'
+            if text.startswith('lab-reunis-11'):
+                text='Laboratoires réunis, 1 Marbuergerstrooss, 9764, Marnach'
+            if text.startswith('lab-reunis-12'):
+                text='Laboratoires réunis, 51 Avenue Lucien Salentiny, 9080, Ettelbruck'
+            if text.startswith('lab-reunis-13'):
+                text='Laboratoires réunis, 14 route de l\'Europe, 5531, Remich'
+            if text.startswith('lab-reunis-14'):
+                text='Laboratoires réunis, 27, rue Principale, 5240, Sandweiler'
+            if text.startswith('lab-reunis-15'):
+                text='Laboratoires réunis, booking by phone 780 290-1, , '
+            if text.startswith('lab-bionext-16'):
+                text='BioneXt, 2 Rue du Chateau d\'Eau, 3364, Leudelange'
+            if text.startswith('lab-bionextpd-17'):
+                text='BioneXt, PickenDoheem'
+            if text.startswith('lab-ketterthill-18'):
+                text='Ketterthill, 11, rue Schwaarze Wee , 3474, Dudelange'
+            if text.startswith('lab-ketterthill-19'):
+                text='Ketterthill, 52, bd J.-F. Kennedy , 4170, Esch-sur-Alzette'
+            if text.startswith('lab-ketterthill-20'):
+                text='Ketterthill, 7, route de Bettembourg , 5810, Hesperange'
+            if text.startswith('lab-ketterthill-21'):
+                text='Ketterthill, Avenue des Bains (Dom. Thermal) , 5601, Mondorf-les-Bains'
+            if text.startswith('lab-ketterthill-22'):
+                text='Ketterthill, 8, avenue du Swing , 4367, Belvaux'
+            if text.startswith('lab-ketterthill-23'):
+                text='Ketterthill, 1-3, rue de la Continentale , 4917, Bascharage'
+            if text.startswith('lab-ketterthill-24'):
+                text='Ketterthill, 14, rue d\'Esch, 3920, Mondercange'
+            if text.startswith('lab-ketterthill-25'):
+                text='Ketterthill, 21, rue d\'Orval , 2270, Luxembourg'
+            if text.startswith('lab-ketterthill-26'):
+                text='Ketterthill, 24, rue Glesener , 1630, Luxembourg'
+            if text.startswith('lab-ketterthill-27'):
+                text='Ketterthill, 36, avenue Victor Hugo , 1750, Luxembourg'
+            if text.startswith('lab-ketterthill-28'):
+                text='Ketterthill, 70, rue de Luxembourg , 8140, Bridel'
+            if text.startswith('lab-ketterthill-29'):
+                text='Ketterthill, 15, rue Edward Steichen , 2540, Luxembourg'
+            if text.startswith('lab-ketterthill-30'):
+                text='Ketterthill, 29, rue Cents , 1319, Luxembourg'
+            if text.startswith('lab-ketterthill-31'):
+                text='Ketterthill, 155, rue Lucien Salentiny , 9080, Ettelbruck'
+            if text.startswith('lab-ketterthill-32'):
+                text='Ketterthill, 12, rue G.-D. Charlotte , 7520, Mersch'
+            if text.startswith('lab-ketterthill-33'):
+                text='Ketterthill, 18, rue de la Piscine , 8508, Redange-sur-Atert'
+            if text.startswith('lab-ketterthill-34'):
+                text='Ketterthill, 19, rue Grande-Duchesse Charlotte , 9515, Wiltz'
         locations = Location.objects.filter(name=text)
         if len(locations) > 0:
             return locations[0]
@@ -159,3 +223,6 @@ class TnsCsvVisitImportReader:
             style = ' color="brown" '
         result += "<p><font " + style + ">Number of raised warnings: <b>" + str(self.warning_count) + "</b></font></p>"
         return result
+
+def remove_bom(line):
+    return line[3:] if line.startswith(codecs.BOM_UTF8) else line
diff --git a/smash/web/tests/importer/test_tns_csv_visit_import_reader.py b/smash/web/tests/importer/test_tns_csv_visit_import_reader.py
index 351988cd..14d2b16f 100644
--- a/smash/web/tests/importer/test_tns_csv_visit_import_reader.py
+++ b/smash/web/tests/importer/test_tns_csv_visit_import_reader.py
@@ -139,15 +139,15 @@ class TestTnsCsvSubjectReader(TestCase):
 
         visit = Visit.objects.filter(id=visits[0].id)[0]
         appointment = Appointment.objects.filter(visit=visit)[0]
-        self.assertEqual(u"Laboratoires réunis", appointment.location.name)
+        self.assertTrue(u"Laboratoires réunis" in appointment.location.name)
 
         visit = Visit.objects.filter(id=visits[1].id)[0]
         appointment = Appointment.objects.filter(visit=visit)[0]
-        self.assertEqual(u"Ketterthill", appointment.location.name)
+        self.assertTrue(u"Ketterthill" in appointment.location.name)
 
         visit = Visit.objects.filter(id=visits[2].id)[0]
         appointment = Appointment.objects.filter(visit=visit)[0]
-        self.assertEqual(u"BioneXt", appointment.location.name)
+        self.assertTrue(u"BioneXt" in appointment.location.name)
 
         self.assertEquals(3, self.get_warnings_count())
 
-- 
GitLab