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
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