def post(self): db = current_app.extensions['sqlalchemy'].db parser = DataJSONParser() taxi_json = parser.get_data()[0] taxi = models.Taxi(**taxi_json) db.session.add(taxi) db.session.commit() return {'data': [taxi]}, 201
def post(self): db = current_app.extensions['sqlalchemy'].db parser = DataJSONParser(filter_=taxi_model_expect) taxi_json = parser.get_data()[0] if not current_user.has_role('admin') and "id" in taxi_json: del taxi_json['id'] taxi = models.Taxi(**taxi_json) db.session.add(taxi) db.session.commit() return {'data': [taxi]}, 201
def put(self): parser = DataJSONParser() data = parser.get_data()[0] redis_store.hset( "waiting_time_roissy", "timestamp", data["timestamp"] ) redis_store.hset( "waiting_time_roissy", "waiting_time", data["waiting_time"] ) return self.get_data(), 200
def put(self, taxi_id): parser = DataJSONParser() t, last_update_at = self.get_descriptions(taxi_id) new_status = parser.get_data()[0]['status'] if new_status != t[0]['vehicle_description_status'] or\ t[0]['taxi_last_update_at'] is None or\ t[0]['taxi_last_update_at'] <= (datetime.now() - timedelta(hours=4)): cur = current_app.extensions['sqlalchemy'].db.session.\ connection().connection.cursor() cur.execute("UPDATE vehicle_description SET status=%s WHERE id=%s", (new_status, t[0]['vehicle_description_id'])) to_set = ['last_update_at = %s', [datetime.now()]] if t[0]['taxi_current_hail_id']: hail = models.Hail.query.from_statement( text("SELECT * from hail where id=:hail_id")).params( hail_id=t[0]['taxi_current_hail_id']).one() hail_status, current_hail_id = models.Taxi.get_new_hail_status( hail.id, new_status, hail._status) if hail_status: hail.status = hail_status to_set[0] += ", current_hail_id = %s" to_set[1].append(current_hail_id) current_app.extensions['sqlalchemy'].db.session.add(hail) query = "UPDATE taxi SET {} WHERE id = %s".format(to_set[0]) cur.execute(query, (to_set[1] + [t[0]['taxi_id']])) current_app.extensions['sqlalchemy'].db.session.commit() t[0]['vehicle_description_status'] = new_status taxi_id_operator = "{}:{}".format(taxi_id, current_user.email) if t[0]['vehicle_description_status'] == 'free': redis_store.zrem(current_app.config['REDIS_NOT_AVAILABLE'], taxi_id_operator) else: redis_store.zadd(current_app.config['REDIS_NOT_AVAILABLE'], 0., taxi_id_operator) current_app.extensions['redis_saved'].zadd( 'taxi_status:{}'.format(taxi_id), float(time()), '{}_{}'.format(new_status, time()), ) taxi_m = marshal( { 'data': [models.RawTaxi.generate_dict(t, operator=current_user.email)] }, taxi_model) taxi_m['data'][0]['operator'] = current_user.email taxi_m['data'][0]['last_update'] = last_update_at return taxi_m