Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
    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