def start_check():
    try:
        # 1. Open login page
        login_page = WebPage(url="%s%s" % (UKVISA_BASE_URL, LOGIN_PATH),
                             handler=s)

        login_form_data = get_login_form_data(login_page.content())

        # 2. Post login form and login :)
        login_form = create_login_form(login_form_data)
        res = login_form.submit().response()

        # 3. Open book appointment page
        book_appointment_page = WebPage(url=get_book_appointment_page_url(),
                                        handler=s)

        get_appointment_location_form = WebForm(
            action_url="%s%s" % (UKVISA_BASE_URL, APPOINTMENT_LOCATION_PATH),
            form_data=get_appointment_loc_form_data(
                book_appointment_page.content()),
            handler=s)

        res = get_appointment_location_form.submit().response()

        schedule_appointment_form_data = get_appointment_schedule_form_data(
            res.text)

        post_id = schedule_appointment_form_data['EnrolmentStationId']

        available_dates = get_available_dates()

        print("\n" + datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y"))
        if len(available_dates) > 0:
            appointment_data = {
                date: get_available_time_slots(post_id=post_id,
                                               appointment_date=date)
                for date in available_dates[:7]
            }
            print('Available dates found, generating message to be emailed')
            send_email(create_message(appointment_data))
        else:
            print('No available dates for %s...' % (VISA_CENTRE))

        #TODO: Need to figure out the captcha after submitting the form
        # submit_schedule_appointment_form(schedule_appointment_form_data);

    except Exception as e:
        print('Error checking visa appointment', e)
def get_book_appointment_page_url():
    user_applications_page = WebPage(url="%s%s" %
                                     (UKVISA_BASE_URL, USER_APPLICATIONS_PATH),
                                     handler=s)

    d = pq(user_applications_page.content())
    return "%s%s" % (UKVISA_BASE_URL, d('a').attr('href').replace('..', ''))