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