def post(self):
     try:
         id = int(self.request.get("id"))
         plat = float(self.request.get("plat"))
         plon = float(self.request.get("plon"))
         dlat = float(self.request.get("dlat"))
         dlon = float(self.request.get("dlon"))
         #check if order already exists
         pastOrder = db.GqlQuery("SELECT * FROM Order WHERE orderId = :1",id).get()
         if pastOrder is None:
             order = Order(orderId =id,pickup_lat=plat,pickup_lon=plon,dropoff_lat=dlat,dropoff_lon=dlon)
             order.put()
             assign.assignDelivery()
             self.redirect('/order/needPickup')
         else:
             self.response.set_status(333,"Order already exists")
             self.response.headers['Content-Type'] = 'text/html'
             template = jinja_env.get_template('newOrder.html')
             d = {'error':'Order {} already exists'.format(id)}
             self.response.out.write(template.render())
     except ValueError:
         self.response.set_status(344,'Invalid values')
         self.response.headers['Content-Type'] = 'text/html'
         template = jinja_env.get_template('newOrder.html')
         d = {'error':'Invalid input parameters'}
         self.response.out.write(template.render(d))
Exemple #2
0
 def post(self):
     try:
         id = int(self.request.get("id"))
         plat = float(self.request.get("plat"))
         plon = float(self.request.get("plon"))
         dlat = float(self.request.get("dlat"))
         dlon = float(self.request.get("dlon"))
         #check if order already exists
         pastOrder = db.GqlQuery("SELECT * FROM Order WHERE orderId = :1",
                                 id).get()
         if pastOrder is None:
             order = Order(orderId=id,
                           pickup_lat=plat,
                           pickup_lon=plon,
                           dropoff_lat=dlat,
                           dropoff_lon=dlon)
             order.put()
             assign.assignDelivery()
             self.redirect('/order/needPickup')
         else:
             self.response.set_status(333, "Order already exists")
             self.response.headers['Content-Type'] = 'text/html'
             template = jinja_env.get_template('newOrder.html')
             d = {'error': 'Order {} already exists'.format(id)}
             self.response.out.write(template.render())
     except ValueError:
         self.response.set_status(344, 'Invalid values')
         self.response.headers['Content-Type'] = 'text/html'
         template = jinja_env.get_template('newOrder.html')
         d = {'error': 'Invalid input parameters'}
         self.response.out.write(template.render(d))
 def post(self):
     c_id = self.request.get("id")
     c_lat = self.request.get('lat')
     c_lon = self.request.get('lon')
     #do some error handling
     try:
         c_id = int(c_id)
         c_lat = float(c_lat)
         c_lon = float(c_lon)
         #check if courier already exists
         pastCourier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = :1",c_id).get()
         if pastCourier is None:
             courier = Courier(courierId=c_id,lat = c_lat,lon=c_lon)
             courier.put()
             #when a courier is added, we assign it an order
             assign.assignDelivery()
             self.redirect('/courier/online')
         else:
             self.response.set_status(302,'Courier already exists')
             self.response.headers['Content-Type'] = 'text/html'
             template = jinja_env.get_template('courier.html')
             d={"error":"courier with id {} already exists".format(c_id)}
             self.response.out.write(template.render(d))
     except ValueError:
         self.response.set_status(303,'Invalid Values')
         self.response.headers['Content-Type'] = 'text/html'
         template = jinja_env.get_template('courier.html')
         d={"error":"Invalid input parameters"}
         self.response.out.write(template.render(d))
Exemple #4
0
 def post(self):
     c_id = self.request.get("id")
     c_lat = self.request.get('lat')
     c_lon = self.request.get('lon')
     #do some error handling
     try:
         c_id = int(c_id)
         c_lat = float(c_lat)
         c_lon = float(c_lon)
         #check if courier already exists
         pastCourier = db.GqlQuery(
             "SELECT * FROM Courier WHERE courierId = :1", c_id).get()
         if pastCourier is None:
             courier = Courier(courierId=c_id, lat=c_lat, lon=c_lon)
             courier.put()
             #when a courier is added, we assign it an order
             assign.assignDelivery()
             self.redirect('/courier/online')
         else:
             self.response.set_status(302, 'Courier already exists')
             self.response.headers['Content-Type'] = 'text/html'
             template = jinja_env.get_template('courier.html')
             d = {"error": "courier with id {} already exists".format(c_id)}
             self.response.out.write(template.render(d))
     except ValueError:
         self.response.set_status(303, 'Invalid Values')
         self.response.headers['Content-Type'] = 'text/html'
         template = jinja_env.get_template('courier.html')
         d = {"error": "Invalid input parameters"}
         self.response.out.write(template.render(d))
 def post(self,courier_id):
     courier_id = int(courier_id)
     courier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = :1",courier_id).get()
     if courier:
         self.update(courier)
         assign.assignDelivery()
         self.redirect('/courier/online')
     else:
         self.response.set_status(333,message="No courier found")
Exemple #6
0
 def post(self, courier_id):
     courier_id = int(courier_id)
     courier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = :1",
                           courier_id).get()
     if courier:
         self.update(courier)
         assign.assignDelivery()
         self.redirect('/courier/online')
     else:
         self.response.set_status(333, message="No courier found")
Exemple #7
0
 def testAssignDelivery2(self):
     #have orders, but no couriers
     order = Order(orderId=1,pickup_lat=1.0,pickup_lon=1.0,dropoff_lat=2.0,dropoff_lon=2.0)
     order.put()
     order = Order(orderId=2,pickup_lat=11.0,pickup_lon=1.0,dropoff_lat=2.0,dropoff_lon=2.0)
     order.put()
     
     assign.assignDelivery()
     posOrder = db.GqlQuery("SELECT * FROM Order WHERE orderId = 1").get()
     self.assertEqual(None,posOrder.courierId)
     self.assertEqual('needPickup',posOrder.state)
     posOrder = db.GqlQuery("SELECT * FROM Order WHERE orderId = 2").get()
     self.assertEqual(None,posOrder.courierId)
     self.assertEqual('needPickup',posOrder.state)
Exemple #8
0
 def testAssignDelivery1(self):
     #have couriers but no orders available
     courier = Courier(courierId=1,lat=2.0,lon=3.0,online=True)
     courier.put()
     courier = Courier(courierId=3,lat=4.0,lon=3.0,online=True)
     courier.put()
     
     orders = assign.idleOrders()
     self.assertEqual(0, orders.count())
     assign.assignDelivery()
     
     posCourier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = 1").get()
     self.assertEqual(True,posCourier.online)
     posCourier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = 3").get()
     self.assertEqual(True,posCourier.online)
 def post(self,courier_id):
     self.response.out.write(courier_id)
     courier_id = int(courier_id)
     handle = db.GqlQuery("SELECT * FROM Courier WHERE courierId = :1",courier_id)
     courier = handle.get()
     if courier is not None:
         order = db.GqlQuery("SELECT * FROM Order WHERE state = :1",'enRoute').get()
         if order is not None:
             self.update(order)
             #assign it a new delivery
             assign.assignDelivery()
             self.redirect('/order/delivered')
         else:
             self.response.set_status(333,message='No order found')
     else:
         self.response.set_status(333,message='No courier found')
Exemple #10
0
 def post(self, courier_id):
     self.response.out.write(courier_id)
     courier_id = int(courier_id)
     handle = db.GqlQuery("SELECT * FROM Courier WHERE courierId = :1",
                          courier_id)
     courier = handle.get()
     if courier is not None:
         order = db.GqlQuery("SELECT * FROM Order WHERE state = :1",
                             'enRoute').get()
         if order is not None:
             self.update(order)
             #assign it a new delivery
             assign.assignDelivery()
             self.redirect('/order/delivered')
         else:
             self.response.set_status(333, message='No order found')
     else:
         self.response.set_status(333, message='No courier found')
Exemple #11
0
    def testAssignDelivery3(self):
        #normal case where we have orders and couriers available
        courier = Courier(courierId=1,lat=2.0,lon=3.0,online=True)
        courier.put()
        courier = Courier(courierId=3,lat=14.0,lon=13.0,online=True)
        courier.put()
        order = Order(orderId=4,pickup_lat=1.0,pickup_lon=1.0,dropoff_lat=2.0,dropoff_lon=2.0)
        order.put()
        order = Order(orderId=5,pickup_lat=11.0,pickup_lon=11.0,dropoff_lat=2.0,dropoff_lon=2.0)
        order.put()
        
        assign.assignDelivery()
        #order 4 is matched with courier 1
#        posCourier = db.GqlQuery("SELECT * FROM Courier WHERE courierId = 1").get()
#        self.assertEqual(4,posCourier.orderId)
#        self.assertEqual(False,posCourier.online)
        
        posOrder = db.GqlQuery("SELECT * FROM Order WHERE orderId = 4").get()
        self.assertEqual(1,posOrder.courierId)
        self.assertEqual('enRoute',posOrder.state)