def need_a_ride(event_id=None, ride_request_id=None): # pdb.set_trace() 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 ride_request_id is None: name = request.form['name'] email = request.form['email'] num_seats = int(request.form['num_seats']) # create a request requester = Person(name=name, email=email, db=db) rideshare_request = RideshareRequest(requester=requester, number_seats=num_seats, event=event, db=db) # request_id = reservation.register_rideshare_request(rideshare_request) # serialize_manager() return redirect('/event/{}/request_ride/{}'.format( event_id, str(rideshare_request._id))) else: # rideshare_request = reservation.rideshare_requests[ride_request_id] rideshare_request = RideshareRequest(_id=ObjectId(ride_request_id), db=db) match = None for rideshare in manager.get_rideshares(): if rideshare_request.requester in rideshare.riders: match = rideshare.ride_sharer break html = '' if match is not None: html += "You've been matched with {}".format(match.name) else: open_rideshares = manager.get_open_rideshares( rideshare_request.number_seats) if len(open_rideshares) == 0: html = 'Sorry, there are no available rideshares at this time. ' html += 'Check back soon to see when rides become available' else: html = 'There {} {} ride{} available'.format( 'are' if len(open_rideshares) != 1 else 'is', len(open_rideshares), 's' if len(open_rideshares) != 1 else '') html += '<br><br>' html += 'Select any rides you would be happy taking' html += '<form action="requested" method="post">' for rideshare in open_rideshares: ride_sharer = rideshare.ride_sharer html += '<input type="checkbox" ' html += 'name="id" value="{}" '.format( str(rideshare._id)) html += '/>' html += ' {} ({} seat{})'.format( ride_sharer.name, rideshare.seats_available(), 's' if rideshare.seats_available() != 1 else '') 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