ogn-python/ogn/model/aircraft_beacon.py

107 wiersze
3.1 KiB
Python

from sqlalchemy import Column, String, Integer, Float, Boolean, SmallInteger, ForeignKey
from sqlalchemy.orm import relationship
from .beacon import Beacon
class AircraftBeacon(Beacon):
__tablename__ = "aircraft_beacon"
# Flarm specific data
address_type = Column(SmallInteger)
aircraft_type = Column(SmallInteger, index=True)
stealth = Column(Boolean)
address = Column(String(6))
climb_rate = Column(Float)
turn_rate = Column(Float)
flightlevel = Column(Float)
signal_quality = Column(Float)
error_count = Column(Integer)
frequency_offset = Column(Float)
gps_status = Column(String)
software_version = Column(Float)
hardware_version = Column(SmallInteger)
real_address = Column(String(6))
signal_power = Column(Float)
status = Column(SmallInteger, index=True)
# Relations
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True)
receiver = relationship('Receiver', foreign_keys=[receiver_id])
device_id = Column(Integer, ForeignKey('device.id', ondelete='SET NULL'), index=True)
device = relationship('Device', foreign_keys=[device_id])
def __repr__(self):
return "<AircraftBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % (
self.address_type,
self.aircraft_type,
self.stealth,
self.address,
self.climb_rate,
self.turn_rate,
self.flightlevel,
self.signal_quality,
self.error_count,
self.frequency_offset,
self.gps_status,
self.software_version,
self.hardware_version,
self.real_address,
self.signal_power,
self.status)
@classmethod
def get_csv_columns(self):
return['location',
'altitude',
'name',
'receiver_name',
'timestamp',
'track',
'ground_speed',
'address_type',
'aircraft_type',
'stealth',
'address',
'climb_rate',
'turn_rate',
'flightlevel',
'signal_quality',
'error_count',
'frequency_offset',
'gps_status',
'software_version',
'hardware_version',
'real_address',
'signal_power']
def get_csv_values(self):
return [
self.location_wkt,
int(self.altitude),
self.name,
self.receiver_name,
self.timestamp,
self.track,
self.ground_speed,
self.address_type,
self.aircraft_type,
self.stealth,
self.address,
self.climb_rate,
self.turn_rate,
self.flightlevel,
self.signal_quality,
int(self.error_count) if self.error_count else None,
self.frequency_offset,
self.gps_status,
self.software_version,
self.hardware_version,
self.real_address,
self.signal_power]