def have_a_ride(event_id=None, rideshare_id=None):
    try:
        event = Event(_id=ObjectId(event_id), db=db)
        manager = EventManager(event=event, db=db)
        # reservation = Reservation(event=event, db=db)
        # reservation = manager.reservation_map[event_id]
        if rideshare_id is None:
            name = request.form['name']
            email = request.form['email']
            # location = request.form['location']
            num_seats = int(request.form['num_seats'])

            p = Person(name=name, email=email, db=db)
            rideshare = Rideshare(ride_sharer=p,
                                  number_seats=num_seats,
                                  event=event,
                                  db=db)
            # reservation.rideshares.add(rideshare)
            # rideshare_id = reservation.register_rideshare(rideshare)
            # serialize_manager()

            return redirect('/event/{}/rideshare/{}'.format(
                event_id, str(rideshare._id)))
        else:
            print(manager.get_rideshares())
            # rideshare = reservation.rideshares[rideshare_id]
            rideshare = Rideshare(_id=ObjectId(rideshare_id), db=db)

            rideshare_request_matches = \
                manager.get_rideshare_request_matches(rideshare)

            html = "Thanks for offering a ride"
            html += " -- you have {} of {} spots available".format(
                rideshare.seats_available(), rideshare.number_seats)
            html += "<br><br>"
            html += "<h1>Reserved</h1>"
            if len(rideshare.riders) == 0:
                html += "None Yet!"
            else:
                html += '<ul>'
                for rider in rideshare.riders:
                    html += "<li>{}</li>".format(rider.name)
                html += '</ul>'
            html += "<br><br>"
            html += "<h1>Open</h1>"

            if len(rideshare_request_matches) == 0:
                html += "No one needs a ride yet - we'll email you if you can help"
            else:
                html += 'Select up to {} requests to reserve spots'.format(
                    rideshare.seats_available())
                html += '<form action="reserved" method="post">'
                for rideshare_request in rideshare_request_matches:
                    requester = rideshare_request.requester
                    html += '<input type="checkbox" '
                    html += 'name="id" value="{}" '.format(
                        str(rideshare_request._id))
                    html += '/>'
                    html += ' {}'.format(requester.name)
                    html += ' <br>'
                html += '<input type="submit" value="Submit">'
                html += '</form>'

            return html
    except Exception as e:
        print('>>> error!')
        import traceback
        print(traceback.format_exc())
        #print(manager.reservation_map)
        raise e