diff --git a/RIGS/importer.py b/RIGS/importer.py index 6eb42b66..05d5508a 100644 --- a/RIGS/importer.py +++ b/RIGS/importer.py @@ -14,7 +14,6 @@ from RIGS import models import reversion from datetime import datetime - def setup_cursor(): try: cursor = connections['legacy'].cursor() @@ -135,48 +134,65 @@ def import_venues(delete=False): object = models.Venue(name=row[0], three_phase_available=row[1]) object.save() +def clean_ascii(text): + return ''.join([i if ord(i) < 128 else '' for i in text]) def import_rigs(): cursor = setup_cursor() if cursor is None: return - sql = """SELECT e.id, event, person_id, organisation_id, venue, description, status, start_date, start_time, end_date, end_time, access_date, access_time, meet_date, meet_time, meet_info, based_on_id, based_on_type, user_id, payment_method, order_no, payment_received, collectorsid FROM eventdetails AS e LEFT JOIN rigs AS r ON e.id = r.id WHERE describable_type = 'Rig'""" + sql = """SELECT e.id, event, person_id, organisation_id, venue, description, status, start_date, start_time, end_date, end_time, access_date, access_time, meet_date, meet_time, meet_info, based_on_id, based_on_type, dry_hire, user_id, payment_method, order_no, payment_received, collectorsid FROM eventdetails AS e INNER JOIN rigs AS r ON e.id = r.id WHERE describable_type = 'Rig' AND venue IS NOT NULL""" cursor.execute(sql) for row in cursor.fetchall(): - with transaction.atomic(), reversion.revision(): - venue = models.Venue.objects.get(name__iexact=row[4]) - status = { - 'Booked': models.Event.BOOKED, - 'Provisional': models.Event.PROVISIONAL, - 'Cancelled': models.Event.CANCELLED, - } + print(row) + person = models.Person.objects.get(pk=row[2]) + if row[3]: + organisation = models.Organisation.objects.get(pk=row[3]) + else: + organisation = None + venue = models.Venue.objects.get(name__iexact=row[4]) + status = { + 'Booked': models.Event.BOOKED, + 'Provisional': models.Event.PROVISIONAL, + 'Cancelled': models.Event.CANCELLED, + } + mic = models.Profile.objects.get(pk=row[19]) + if row[16] and row[17] == "Rig": + try: + based_on = models.Event.objects.get(pk=row[16]) + except ObjectDoesNotExist: + based_on = None + else: + based_on = None + with transaction.atomic(), reversion.create_revision(): try: object = models.Event.objects.get(pk=row[0]) except ObjectDoesNotExist: object = models.Event(pk=row[0]) - object.name = row[1] - object.person = row[2] - object.organisation = row[3] + object.name = clean_ascii(row[1]) + object.person = person + object.organisation = organisation object.venue = venue - object.notes = row[5] + object.notes = clean_ascii(row[5]) object.status = status[row[6]] object.start_date = row[7] object.start_time = row[8] object.end_date = row[9] object.end_time = row[10] - object.access_at = datetime.combine(row[11], row[12]) - object.meet_at = datetime.combine(row[13], row[14]) + if row[11] and row[12]: + object.access_at = datetime.combine(row[11], row[12]) + if row[13] and row[14]: + object.meet_at = datetime.combine(row[13], row[14]) object.meet_info = row[15] - if row[17] == "Rig": - object.based_on = row[16] + object.based_on = based_on object.dry_hire = row[18] object.is_rig = True - object.mic = row[19] + object.mic = mic object.payment_method = row[20] object.purchase_order = row[21] object.payment_received = row[22] object.collector = row[23] - + object.save() def main(): # import_users()