pull/56/head
Konstantin Gründger 2016-07-02 16:31:33 +02:00
rodzic 89a3a659ac
commit 72d8445570
1 zmienionych plików z 13 dodań i 12 usunięć

Wyświetl plik

@ -26,7 +26,7 @@ def get_aircraft_beacon_start_id():
if last_used_aircraft_beacon_id is None: if last_used_aircraft_beacon_id is None:
min_aircraft_beacon_id = app.session.query(func.min(AircraftBeacon.id)).first() min_aircraft_beacon_id = app.session.query(func.min(AircraftBeacon.id)).first()
if min_aircraft_beacon_id is None: if min_aircraft_beacon_id is None:
return 0 start_id = 0
else: else:
start_id = min_aircraft_beacon_id[0] start_id = min_aircraft_beacon_id[0]
else: else:
@ -201,11 +201,12 @@ def compute_logbook_entries():
sq.c.timestamp.label('reftime'), sq.c.timestamp.label('reftime'),
sq.c.device_id.label('device_id'), sq.c.device_id.label('device_id'),
null().label('takeoff_timestamp'), null().label('takeoff_track'), null().label('takeoff_airport_id'), null().label('takeoff_timestamp'), null().label('takeoff_track'), null().label('takeoff_airport_id'),
sq.c.timestamp.label('landing_timestamp'), sq.c.track_next.label('landing_track'), sq.c.airport_id_next.label('landing_airport_id'), sq.c.timestamp.label('landing_timestamp'), sq.c.track.label('landing_track'), sq.c.airport_id.label('landing_airport_id'),
null().label('duration')) \ null().label('duration')) \
.filter(sq.c.is_takeoff == false()) \ .filter(sq.c.is_takeoff == false()) \
.filter(or_(sq.c.device_id != sq.c.device_id_prev, .filter(or_(sq.c.device_id != sq.c.device_id_prev,
sq.c.is_takeoff_prev == false())) sq.c.is_takeoff_prev == false(),
sq.c.is_takeoff_prev == null()))
# find starts without landing # find starts without landing
only_starts_query = app.session.query( only_starts_query = app.session.query(
@ -216,20 +217,20 @@ def compute_logbook_entries():
null().label('duration')) \ null().label('duration')) \
.filter(sq.c.is_takeoff == true()) \ .filter(sq.c.is_takeoff == true()) \
.filter(or_(sq.c.device_id != sq.c.device_id_next, .filter(or_(sq.c.device_id != sq.c.device_id_next,
sq.c.is_takeoff_next == true())) sq.c.is_takeoff_next == true(),
sq.c.is_takeoff_next == null()))
# update 'incomplete' logbook entries with 'complete flights' # update 'incomplete' logbook entries with 'complete flights'
complete_flights = complete_flight_query.subquery() complete_flights = complete_flight_query.subquery()
upd = update(Logbook) \ upd = update(Logbook) \
.where(and_(Logbook.reftime == complete_flights.c.reftime, .where(and_(Logbook.device_id == complete_flights.c.device_id,
Logbook.device_id == complete_flights.c.device_id, or_(and_(Logbook.takeoff_airport_id == complete_flights.c.takeoff_airport_id,
or_(Logbook.takeoff_airport_id == complete_flights.c.takeoff_airport_id, Logbook.takeoff_timestamp == complete_flights.c.takeoff_timestamp),
and_(Logbook.takeoff_airport_id == null(), Logbook.takeoff_airport_id == null()),
complete_flights.c.takeoff_airport_id == null())), or_(and_(Logbook.landing_airport_id == complete_flights.c.landing_airport_id,
or_(Logbook.landing_airport_id == complete_flights.c.landing_airport_id, Logbook.landing_timestamp == complete_flights.c.landing_timestamp),
and_(Logbook.landing_airport_id == null(), Logbook.landing_airport_id == null()))) \
complete_flights.c.landing_airport_id == null())))) \
.values({"takeoff_timestamp": complete_flights.c.takeoff_timestamp, .values({"takeoff_timestamp": complete_flights.c.takeoff_timestamp,
"takeoff_track": complete_flights.c.takeoff_track, "takeoff_track": complete_flights.c.takeoff_track,
"takeoff_airport_id": complete_flights.c.takeoff_airport_id, "takeoff_airport_id": complete_flights.c.takeoff_airport_id,