def save_reservation( data, hvara_reservations, user_objects_by_email, missing_users, catering_provider, ): if not data['resource']['object']: return origin_id = 'hvara:%s' % data['VarausId'] res = hvara_reservations.get(origin_id) try: res = Reservation.objects.get(origin_id=origin_id) except Reservation.DoesNotExist: res = Reservation(origin_id=origin_id) res.begin = local_tz.localize( datetime.strptime(data['AlkuAika'], "%Y-%m-%dT%H:%M:%S")) res.end = local_tz.localize( datetime.strptime(data['LoppuAika'], "%Y-%m-%dT%H:%M:%S")) res.event_subject = data['Tilaisuus'].strip() res.host_name = data['Isanta'].strip() res.created_at = local_tz.localize( datetime.strptime(data['Perustettu'], "%Y-%m-%dT%H:%M:%S")) res.modified_at = local_tz.localize( datetime.strptime(data['Muutettu'], "%Y-%m-%dT%H:%M:%S")) res.number_of_participants = int(data['OsallistujaLkm']) if res.number_of_participants < 0: res.number_of_participants = None res.event_description = data['Selite'] or '' if data['VarusteluSelite'] or data['equipment']: s = 'Varustelu:\n' items = [] if data['equipment']: items.append('\n'.join(['- ' + x for x in data['equipment']])) if data['VarusteluSelite']: items.append(data['VarusteluSelite']) s += '\n\n'.join(items) if res.event_description and not res.event_description.endswith('\n'): s = '\n' + s res.event_description += s res.participants = '\n'.join(data['attendees']) if data['OsallistujaSelite']: if res.participants: res.participants += '\n\n' res.participants += data['OsallistujaSelite'] res.comments = 'Siirretty vanhasta huonevarausjärjestelmästä' res.resource = data['resource']['object'] user = data['user'] if user is not None: res.reserver_name = user['Nimi'] email = user['Mail'].strip().lower() res.reserver_email_address = email res.reserver_phone_number = user['Puhelin'] if email not in user_objects_by_email: try: u_obj = User.objects.get(email=email) except User.DoesNotExist: print("%s does not exist" % email) u_obj = None user_objects_by_email[email] = u_obj res.user = user_objects_by_email[email] if not res.user: missing_users.setdefault(email, 0) missing_users[email] += 1 else: res.reserver_name = '' res.reserver_email_address = '' res.reserver_phone_number = '' res.user = None res._skip_notifications = True print(res) res.save() if data['catering'] or data['TarjoiluSelite']: order = CateringOrder(reservation=res, provider=catering_provider) invoicing_data = [data.get(f) for f in PAYER_FIELDS] order.invoicing_data = '\n'.join( [val.strip() for val in invoicing_data if val]) message_data = [] if data['catering']: message_data.append('\n'.join(data['catering'])) if data['TarjoiluSelite']: message_data.append(data['TarjoiluSelite'].strip()) order.message = '\n\n'.join(message_data) order.save()
def save_reservation( data, hvara_reservations, user_objects_by_email, missing_users, catering_provider, ): if not data['resource']['object']: return origin_id = 'hvara:%s' % data['VarausId'] res = hvara_reservations.get(origin_id) try: res = Reservation.objects.get(origin_id=origin_id) except Reservation.DoesNotExist: res = Reservation(origin_id=origin_id) res.begin = local_tz.localize(datetime.strptime(data['AlkuAika'], "%Y-%m-%dT%H:%M:%S")) res.end = local_tz.localize(datetime.strptime(data['LoppuAika'], "%Y-%m-%dT%H:%M:%S")) res.event_subject = data['Tilaisuus'].strip() res.host_name = data['Isanta'].strip() res.created_at = local_tz.localize(datetime.strptime(data['Perustettu'], "%Y-%m-%dT%H:%M:%S")) res.modified_at = local_tz.localize(datetime.strptime(data['Muutettu'], "%Y-%m-%dT%H:%M:%S")) res.number_of_participants = int(data['OsallistujaLkm']) if res.number_of_participants < 0: res.number_of_participants = None res.event_description = data['Selite'] or '' if data['VarusteluSelite'] or data['equipment']: s = 'Varustelu:\n' items = [] if data['equipment']: items.append('\n'.join(['- ' + x for x in data['equipment']])) if data['VarusteluSelite']: items.append(data['VarusteluSelite']) s += '\n\n'.join(items) if res.event_description and not res.event_description.endswith('\n'): s = '\n' + s res.event_description += s res.participants = '\n'.join(data['attendees']) if data['OsallistujaSelite']: if res.participants: res.participants += '\n\n' res.participants += data['OsallistujaSelite'] res.comments = 'Siirretty vanhasta huonevarausjärjestelmästä' res.resource = data['resource']['object'] user = data['user'] if user is not None: res.reserver_name = user['Nimi'] email = user['Mail'].strip().lower() res.reserver_email_address = email res.reserver_phone_number = user['Puhelin'] if email not in user_objects_by_email: try: u_obj = User.objects.get(email=email) except User.DoesNotExist: print("%s does not exist" % email) u_obj = None user_objects_by_email[email] = u_obj res.user = user_objects_by_email[email] if not res.user: missing_users.setdefault(email, 0) missing_users[email] += 1 else: res.reserver_name = '' res.reserver_email_address = '' res.reserver_phone_number = '' res.user = None res._skip_notifications = True print(res) res.save() if data['catering'] or data['TarjoiluSelite']: order = CateringOrder(reservation=res, provider=catering_provider) invoicing_data = [data.get(f) for f in PAYER_FIELDS] order.invoicing_data = '\n'.join([val.strip() for val in invoicing_data if val]) message_data = [] if data['catering']: message_data.append('\n'.join(data['catering'])) if data['TarjoiluSelite']: message_data.append(data['TarjoiluSelite'].strip()) order.message = '\n\n'.join(message_data) order.save()