def format_legs(flight, legs): r = [] for leg in legs: duration = leg.end_time - leg.start_time if duration.total_seconds() > 0: speed = leg.distance / duration.total_seconds() climb_percentage = leg.climb_duration.total_seconds( ) / duration.total_seconds() * 100 else: speed = 0 climb_percentage = 0 if abs(leg.cruise_height) > 0 and leg.cruise_distance \ and abs(leg.cruise_distance / leg.cruise_height) < 1000: glide_rate = format_decimal(float(leg.cruise_distance) / -leg.cruise_height, format='#.#') else: glide_rate = u'\u221e' # infinity if leg.climb_duration.total_seconds() > 0: if leg.climb_height: climbrate = leg.climb_height / leg.climb_duration.total_seconds( ) else: climbrate = 0 climbrate_text = units.format_lift(climbrate) else: climbrate_text = u'-' r.append( dict(distance=units.format_distance(leg.distance, 1), duration=duration, speed=units.format_speed(speed), climb_percentage=format_decimal(climb_percentage, format='#.#'), climbrate=climbrate_text, glide_rate=glide_rate, start_time_of_day=to_seconds_of_day(flight.takeoff_time, leg.start_time))) return r
def format_legs(flight, legs): r = [] for leg in legs: duration = leg.end_time - leg.start_time if duration.total_seconds() > 0: speed = leg.distance / duration.total_seconds() climb_percentage = leg.climb_duration.total_seconds() / duration.total_seconds() * 100 else: speed = 0 climb_percentage = 0 if abs(leg.cruise_height) > 0 and leg.cruise_distance \ and abs(leg.cruise_distance / leg.cruise_height) < 1000: glide_rate = format_decimal(float(leg.cruise_distance) / -leg.cruise_height, format='#.#') else: glide_rate = u'\u221e' # infinity if leg.climb_duration.total_seconds() > 0: if leg.climb_height: climbrate = leg.climb_height / leg.climb_duration.total_seconds() else: climbrate = 0 climbrate_text = units.format_lift(climbrate) else: climbrate_text = u'-' r.append(dict(distance=units.format_distance(leg.distance, 1), duration=duration, speed=units.format_speed(speed), climb_percentage=format_decimal(climb_percentage, format='#.#'), climbrate=climbrate_text, glide_rate=glide_rate, start_time_of_day=to_seconds_of_day(flight.takeoff_time, leg.start_time))) return r
def seconds_of_day(self): return to_seconds_of_day(self.flight.takeoff_time, self.start_time)