Example #1
0
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()
Example #2
0
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()