Follow table naming convention --> plural

pull/68/head
Konstantin Gründger 2018-01-11 08:35:07 +01:00
rodzic 6b6f86f1ca
commit 11ded87599
24 zmienionych plików z 156 dodań i 156 usunięć

Wyświetl plik

@ -28,7 +28,7 @@ app = Celery('ogn.collect',
include=["ogn.collect.database", include=["ogn.collect.database",
"ogn.collect.logbook", "ogn.collect.logbook",
"ogn.collect.stats", "ogn.collect.stats",
"ogn.collect.takeoff_landing", "ogn.collect.takeoff_landings",
"ogn.collect.ognrange" "ogn.collect.ognrange"
]) ])

Wyświetl plik

@ -13,9 +13,9 @@ logger = get_task_logger(__name__)
@app.task @app.task
def update_receiver_coverage(session=None): def update_receiver_coverage(session=None):
"""Add/update receiver coverage entries.""" """Add/update receiver coverages."""
logger.info("Compute receiver coverage.") logger.info("Compute receiver coverages.")
if session is None: if session is None:
session = app.session session = app.session
@ -46,7 +46,7 @@ def update_receiver_coverage(session=None):
sq.c.date) \ sq.c.date) \
.subquery() .subquery()
# if a receiver coverage entry exist --> update it # if a receiver coverage entry exist --> update it
upd = update(ReceiverCoverage) \ upd = update(ReceiverCoverage) \
.where(and_(ReceiverCoverage.location_mgrs == query.c.reduced_mgrs, .where(and_(ReceiverCoverage.location_mgrs == query.c.reduced_mgrs,
ReceiverCoverage.receiver_id == query.c.receiver_id, ReceiverCoverage.receiver_id == query.c.receiver_id,

Wyświetl plik

@ -13,7 +13,7 @@ logger = get_task_logger(__name__)
@app.task @app.task
def update_device_stats(session=None, date=None): def update_device_stats(session=None, date=None):
"""Add/update entries in device stats table.""" """Add/update device stats."""
if session is None: if session is None:
session = app.session session = app.session
@ -46,14 +46,14 @@ def update_device_stats(session=None, date=None):
res = session.execute(ins) res = session.execute(ins)
insert_counter = res.rowcount insert_counter = res.rowcount
session.commit() session.commit()
logger.debug("DeviceStats entries for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter)) logger.debug("DeviceStats for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter))
return "DeviceStats entries for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter) return "DeviceStats for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter)
@app.task @app.task
def update_receiver_stats(date=None): def update_receiver_stats(date=None):
"""Add/update entries in receiver stats table.""" """Add/update receiver stats."""
if not date: if not date:
logger.warn("A date is needed for calculating stats. Exiting") logger.warn("A date is needed for calculating stats. Exiting")
@ -83,6 +83,6 @@ def update_receiver_stats(date=None):
res = session.execute(ins) res = session.execute(ins)
insert_counter = res.rowcount insert_counter = res.rowcount
session.commit() session.commit()
logger.debug("ReceiverStats entries for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter)) logger.debug("ReceiverStats for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter))
return "ReceiverStats entries for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter) return "ReceiverStats for {}: {} deleted, {} inserted".format(date, deleted_counter, insert_counter)

Wyświetl plik

@ -13,7 +13,7 @@ logger = get_task_logger(__name__)
@app.task @app.task
def update_takeoff_landing(session=None): def update_takeoff_landings(session=None):
"""Compute takeoffs and landings.""" """Compute takeoffs and landings."""
logger.info("Compute takeoffs and landings.") logger.info("Compute takeoffs and landings.")

Wyświetl plik

@ -112,11 +112,11 @@ def convert(sourcefile, path=''):
def drop_indices(): def drop_indices():
"""Drop indices of AircraftBeacon.""" """Drop indices of AircraftBeacon."""
session.execute(""" session.execute("""
DROP INDEX IF EXISTS idx_aircraft_beacon_location; DROP INDEX IF EXISTS idx_aircraft_beacons_location;
DROP INDEX IF EXISTS ix_aircraft_beacon_receiver_id; DROP INDEX IF EXISTS ix_aircraft_beacons_receiver_id;
DROP INDEX IF EXISTS ix_aircraft_beacon_device_id; DROP INDEX IF EXISTS ix_aircraft_beacons_device_id;
DROP INDEX IF EXISTS ix_aircraft_beacon_timestamp; DROP INDEX IF EXISTS ix_aircraft_beacons_timestamp;
DROP INDEX IF EXISTS ix_aircraft_beacon_status; DROP INDEX IF EXISTS ix_aircraft_beacons_status;
""") """)
print("Dropped indices of AircraftBeacon") print("Dropped indices of AircraftBeacon")
@ -125,11 +125,11 @@ def drop_indices():
def create_indices(): def create_indices():
"""Create indices for AircraftBeacon.""" """Create indices for AircraftBeacon."""
session.execute(""" session.execute("""
CREATE INDEX idx_aircraft_beacon_location ON aircraft_beacon USING GIST(location); CREATE INDEX idx_aircraft_beacon_location ON aircraft_beacons USING GIST(location);
CREATE INDEX ix_aircraft_beacon_receiver_id ON aircraft_beacon USING BTREE(receiver_id); CREATE INDEX ix_aircraft_beacon_receiver_id ON aircraft_beacons USING BTREE(receiver_id);
CREATE INDEX ix_aircraft_beacon_device_id ON aircraft_beacon USING BTREE(device_id); CREATE INDEX ix_aircraft_beacon_device_id ON aircraft_beacons USING BTREE(device_id);
CREATE INDEX ix_aircraft_beacon_timestamp ON aircraft_beacon USING BTREE(timestamp); CREATE INDEX ix_aircraft_beacon_timestamp ON aircraft_beacons USING BTREE(timestamp);
CREATE INDEX ix_aircraft_beacon_status ON aircraft_beacon USING BTREE(status); CREATE INDEX ix_aircraft_beacon_status ON aircraft_beacons USING BTREE(status);
""") """)
print("Created indices for AircraftBeacon") print("Created indices for AircraftBeacon")
@ -175,12 +175,12 @@ def import_logfile(path):
receiver_beacon_header = ','.join(ReceiverBeacon.get_csv_columns()) receiver_beacon_header = ','.join(ReceiverBeacon.get_csv_columns())
if header == aircraft_beacon_header: if header == aircraft_beacon_header:
if check_no_beacons('aircraft_beacon', reference_date_string): if check_no_beacons('aircraft_beacons', reference_date_string):
import_aircraft_beacon_logfile(path) import_aircraft_beacon_logfile(path)
else: else:
print("For {} beacons already exist. Skipping".format(reference_date_string)) print("For {} beacons already exist. Skipping".format(reference_date_string))
elif header == receiver_beacon_header: elif header == receiver_beacon_header:
if check_no_beacons('receiver_beacon', reference_date_string): if check_no_beacons('receiver_beacons', reference_date_string):
import_receiver_beacon_logfile(path) import_receiver_beacon_logfile(path)
else: else:
print("For {} beacons already exist. Skipping".format(reference_date_string)) print("For {} beacons already exist. Skipping".format(reference_date_string))
@ -198,8 +198,8 @@ def check_no_beacons(tablename, reference_date_string):
def import_aircraft_beacon_logfile(csv_logfile): def import_aircraft_beacon_logfile(csv_logfile):
SQL_TEMPTABLE_STATEMENT = """ SQL_TEMPTABLE_STATEMENT = """
DROP TABLE IF EXISTS aircraft_beacon_temp; DROP TABLE IF EXISTS aircraft_beacons_temp;
CREATE TABLE aircraft_beacon_temp( CREATE TABLE aircraft_beacons_temp(
location geometry, location geometry,
altitude integer, altitude integer,
name character varying, name character varying,
@ -229,7 +229,7 @@ def import_aircraft_beacon_logfile(csv_logfile):
session.execute(SQL_TEMPTABLE_STATEMENT) session.execute(SQL_TEMPTABLE_STATEMENT)
SQL_COPY_STATEMENT = """ SQL_COPY_STATEMENT = """
COPY aircraft_beacon_temp(%s) FROM STDIN WITH COPY aircraft_beacons_temp(%s) FROM STDIN WITH
CSV CSV
HEADER HEADER
DELIMITER AS ',' DELIMITER AS ','
@ -251,46 +251,46 @@ def import_aircraft_beacon_logfile(csv_logfile):
# create device if not exist # create device if not exist
session.execute(""" session.execute("""
INSERT INTO device(address) INSERT INTO devices(address)
SELECT DISTINCT(t.address) SELECT DISTINCT(t.address)
FROM aircraft_beacon_temp t FROM aircraft_beacons_temp t
WHERE NOT EXISTS (SELECT 1 FROM device d WHERE d.address = t.address) WHERE NOT EXISTS (SELECT 1 FROM devices d WHERE d.address = t.address)
""") """)
print("Inserted missing Devices") print("Inserted missing Devices")
# create receiver if not exist # create receiver if not exist
session.execute(""" session.execute("""
INSERT INTO receiver(name) INSERT INTO receivers(name)
SELECT DISTINCT(t.receiver_name) SELECT DISTINCT(t.receiver_name)
FROM aircraft_beacon_temp t FROM aircraft_beacons_temp t
WHERE NOT EXISTS (SELECT 1 FROM receiver r WHERE r.name = t.receiver_name) WHERE NOT EXISTS (SELECT 1 FROM receivers r WHERE r.name = t.receiver_name)
""") """)
print("Inserted missing Receivers") print("Inserted missing Receivers")
# disable constraint trigger # disable constraint trigger
session.execute(""" session.execute("""
ALTER TABLE aircraft_beacon DISABLE TRIGGER ALL ALTER TABLE aircraft_beacons DISABLE TRIGGER ALL
""") """)
print("Disabled constraint triggers") print("Disabled constraint triggers")
session.execute(""" session.execute("""
INSERT INTO aircraft_beacon(location, altitude, name, receiver_name, timestamp, track, ground_speed, INSERT INTO aircraft_beacons(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, 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,
status, receiver_id, device_id) status, receiver_id, device_id)
SELECT t.location, t.altitude, t.name, t.receiver_name, t.timestamp, t.track, t.ground_speed, SELECT t.location, t.altitude, t.name, t.receiver_name, t.timestamp, t.track, t.ground_speed,
t.address_type, t.aircraft_type, t.stealth, t.address, t.climb_rate, t.turn_rate, t.flightlevel, t.signal_quality, t.error_count, t.frequency_offset, t.gps_status, t.software_version, t.hardware_version, t.real_address, t.signal_power, t.address_type, t.aircraft_type, t.stealth, t.address, t.climb_rate, t.turn_rate, t.flightlevel, t.signal_quality, t.error_count, t.frequency_offset, t.gps_status, t.software_version, t.hardware_version, t.real_address, t.signal_power,
0, r.id, d.id 0, r.id, d.id
FROM aircraft_beacon_temp t, receiver r, device d FROM aircraft_beacons_temp t, receivers r, devices d
WHERE t.receiver_name = r.name AND t.address = d.address WHERE t.receiver_name = r.name AND t.address = d.address
""") """)
print("Wrote AircraftBeacons from temporary table into final table") print("Wrote AircraftBeacons from temporary table into final table")
session.execute(""" session.execute("""
ALTER TABLE aircraft_beacon ENABLE TRIGGER ALL ALTER TABLE aircraft_beacons ENABLE TRIGGER ALL
""") """)
print("Enabled constraint triggers") print("Enabled constraint triggers")
session.execute("""DROP TABLE aircraft_beacon_temp""") session.execute("""DROP TABLE aircraft_beacons_temp""")
print("Dropped temporary table") print("Dropped temporary table")
session.commit() session.commit()
@ -301,8 +301,8 @@ def import_receiver_beacon_logfile(csv_logfile):
"""Import csv logfile <arg: csv logfile>.""" """Import csv logfile <arg: csv logfile>."""
SQL_TEMPTABLE_STATEMENT = """ SQL_TEMPTABLE_STATEMENT = """
DROP TABLE IF EXISTS receiver_beacon_temp; DROP TABLE IF EXISTS receiver_beacons_temp;
CREATE TABLE receiver_beacon_temp( CREATE TABLE receiver_beacons_temp(
location geometry, location geometry,
altitude integer, altitude integer,
name character varying, name character varying,
@ -335,7 +335,7 @@ def import_receiver_beacon_logfile(csv_logfile):
session.execute(SQL_TEMPTABLE_STATEMENT) session.execute(SQL_TEMPTABLE_STATEMENT)
SQL_COPY_STATEMENT = """ SQL_COPY_STATEMENT = """
COPY receiver_beacon_temp(%s) FROM STDIN WITH COPY receiver_beacons_temp(%s) FROM STDIN WITH
CSV CSV
HEADER HEADER
DELIMITER AS ',' DELIMITER AS ','
@ -357,26 +357,26 @@ def import_receiver_beacon_logfile(csv_logfile):
# create receiver if not exist # create receiver if not exist
session.execute(""" session.execute("""
INSERT INTO receiver(name) INSERT INTO receivers(name)
SELECT DISTINCT(t.name) SELECT DISTINCT(t.name)
FROM receiver_beacon_temp t FROM receiver_beacons_temp t
WHERE NOT EXISTS (SELECT 1 FROM receiver r WHERE r.name = t.name) WHERE NOT EXISTS (SELECT 1 FROM receivers r WHERE r.name = t.name)
""") """)
print("Inserted missing Receivers") print("Inserted missing Receivers")
session.execute(""" session.execute("""
INSERT INTO receiver_beacon(location, altitude, name, receiver_name, timestamp, track, ground_speed, INSERT INTO receiver_beacons(location, altitude, name, receiver_name, timestamp, track, ground_speed,
version, platform, cpu_load, free_ram, total_ram, ntp_error, rt_crystal_correction, voltage,amperage, cpu_temp, senders_visible, senders_total, rec_input_noise, senders_signal, senders_messages, good_senders_signal, good_senders, good_and_bad_senders, version, platform, cpu_load, free_ram, total_ram, ntp_error, rt_crystal_correction, voltage,amperage, cpu_temp, senders_visible, senders_total, rec_input_noise, senders_signal, senders_messages, good_senders_signal, good_senders, good_and_bad_senders,
status, receiver_id) status, receiver_id)
SELECT t.location, t.altitude, t.name, t.receiver_name, t.timestamp, t.track, t.ground_speed, SELECT t.location, t.altitude, t.name, t.receiver_name, t.timestamp, t.track, t.ground_speed,
t.version, t.platform, t.cpu_load, t.free_ram, t.total_ram, t.ntp_error, t.rt_crystal_correction, t.voltage,amperage, t.cpu_temp, t.senders_visible, t.senders_total, t.rec_input_noise, t.senders_signal, t.senders_messages, t.good_senders_signal, t.good_senders, t.good_and_bad_senders, t.version, t.platform, t.cpu_load, t.free_ram, t.total_ram, t.ntp_error, t.rt_crystal_correction, t.voltage,amperage, t.cpu_temp, t.senders_visible, t.senders_total, t.rec_input_noise, t.senders_signal, t.senders_messages, t.good_senders_signal, t.good_senders, t.good_and_bad_senders,
0, r.id 0, r.id
FROM receiver_beacon_temp t, receiver r FROM receiver_beacons_temp t, receivers r
WHERE t.name = r.name WHERE t.name = r.name
""") """)
print("Wrote ReceiverBeacons from temporary table into final table") print("Wrote ReceiverBeacons from temporary table into final table")
session.execute("""DROP TABLE receiver_beacon_temp""") session.execute("""DROP TABLE receiver_beacons_temp""")
print("Dropped temporary table") print("Dropped temporary table")
session.commit() session.commit()

Wyświetl plik

@ -4,7 +4,7 @@ from datetime import timedelta, datetime
from manager import Manager from manager import Manager
from ogn.collect.logbook import update_logbook from ogn.collect.logbook import update_logbook
from ogn.collect.takeoff_landing import update_takeoff_landing from ogn.collect.takeoff_landing import update_takeoff_landings
from ogn.commands.dbutils import session from ogn.commands.dbutils import session
from ogn.model import Device, DeviceInfo, TakeoffLanding, Airport, Logbook from ogn.model import Device, DeviceInfo, TakeoffLanding, Airport, Logbook
from sqlalchemy import and_, or_ from sqlalchemy import and_, or_

Wyświetl plik

@ -5,7 +5,7 @@ from .beacon import Beacon
class AircraftBeacon(Beacon): class AircraftBeacon(Beacon):
__tablename__ = "aircraft_beacon" __tablename__ = "aircraft_beacons"
# Flarm specific data # Flarm specific data
address_type = Column(SmallInteger) address_type = Column(SmallInteger)
@ -43,15 +43,15 @@ class AircraftBeacon(Beacon):
location_mgrs = Column(String(15), index=True) location_mgrs = Column(String(15), index=True)
# Relations # Relations
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL')) receiver_id = Column(Integer, ForeignKey('receivers.id', ondelete='SET NULL'))
receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='aircraft_beacons') receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='aircraft_beacons')
device_id = Column(Integer, ForeignKey('device.id', ondelete='SET NULL')) device_id = Column(Integer, ForeignKey('devices.id', ondelete='SET NULL'))
device = relationship('Device', foreign_keys=[device_id], backref='aircraft_beacons') device = relationship('Device', foreign_keys=[device_id], backref='aircraft_beacons')
# Multi-column indices # Multi-column indices
Index('ix_aircraft_beacon_receiver_id_receiver_name', 'receiver_id', 'receiver_name') Index('ix_aircraft_beacons_receiver_id_receiver_name', 'receiver_id', 'receiver_name')
Index('ix_aircraft_beacon_device_id_address', 'device_id', 'address') Index('ix_aircraft_beacons_device_id_address', 'device_id', 'address')
def __repr__(self): def __repr__(self):
return "<AircraftBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % ( return "<AircraftBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % (

Wyświetl plik

@ -6,7 +6,7 @@ from .base import Base
class Airport(Base): class Airport(Base):
__tablename__ = "airport" __tablename__ = "airports"
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)

Wyświetl plik

@ -5,7 +5,7 @@ from .base import Base
class Device(Base): class Device(Base):
__tablename__ = 'device' __tablename__ = 'devices'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
address = Column(String(6), index=True) address = Column(String(6), index=True)

Wyświetl plik

@ -5,7 +5,7 @@ from .base import Base
class DeviceInfo(Base): class DeviceInfo(Base):
__tablename__ = 'device_info' __tablename__ = 'device_infos'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
address_type = None address_type = None
@ -20,7 +20,7 @@ class DeviceInfo(Base):
address_origin = Column(SmallInteger) address_origin = Column(SmallInteger)
# Relations # Relations
device_id = Column(Integer, ForeignKey('device.id', ondelete='SET NULL'), index=True) device_id = Column(Integer, ForeignKey('devices.id', ondelete='SET NULL'), index=True)
device = relationship('Device', foreign_keys=[device_id], backref='infos') device = relationship('Device', foreign_keys=[device_id], backref='infos')
def __repr__(self): def __repr__(self):

Wyświetl plik

@ -15,7 +15,7 @@ class DeviceStats(Base):
max_altitude = Column(Float) max_altitude = Column(Float)
# Relations # Relations
device_id = Column(Integer, ForeignKey('device.id', ondelete='SET NULL'), index=True) device_id = Column(Integer, ForeignKey('devices.id', ondelete='SET NULL'), index=True)
device = relationship('Device', foreign_keys=[device_id], backref='stats') device = relationship('Device', foreign_keys=[device_id], backref='stats')
def __repr__(self): def __repr__(self):

Wyświetl plik

@ -18,13 +18,13 @@ class Logbook(Base):
max_altitude = Column(Integer) max_altitude = Column(Integer)
# Relations # Relations
takeoff_airport_id = Column(Integer, ForeignKey('airport.id', ondelete='CASCADE'), index=True) takeoff_airport_id = Column(Integer, ForeignKey('airports.id', ondelete='CASCADE'), index=True)
takeoff_airport = relationship('Airport', foreign_keys=[takeoff_airport_id]) takeoff_airport = relationship('Airport', foreign_keys=[takeoff_airport_id])
landing_airport_id = Column(Integer, ForeignKey('airport.id', ondelete='CASCADE'), index=True) landing_airport_id = Column(Integer, ForeignKey('airports.id', ondelete='CASCADE'), index=True)
landing_airport = relationship('Airport', foreign_keys=[landing_airport_id]) landing_airport = relationship('Airport', foreign_keys=[landing_airport_id])
device_id = Column(Integer, ForeignKey('device.id', ondelete='CASCADE'), index=True) device_id = Column(Integer, ForeignKey('devices.id', ondelete='CASCADE'), index=True)
device = relationship('Device', foreign_keys=[device_id]) device = relationship('Device', foreign_keys=[device_id])
@hybrid_property @hybrid_property

Wyświetl plik

@ -8,7 +8,7 @@ from .geo import Location
class Receiver(Base): class Receiver(Base):
__tablename__ = "receiver" __tablename__ = "receivers"
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)

Wyświetl plik

@ -5,7 +5,7 @@ from .beacon import Beacon
class ReceiverBeacon(Beacon): class ReceiverBeacon(Beacon):
__tablename__ = "receiver_beacon" __tablename__ = "receiver_beacons"
# ReceiverBeacon specific data # ReceiverBeacon specific data
version = Column(String) version = Column(String)
@ -34,11 +34,11 @@ class ReceiverBeacon(Beacon):
status = Column(SmallInteger, index=True) status = Column(SmallInteger, index=True)
# Relations # Relations
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL')) receiver_id = Column(Integer, ForeignKey('receivers.id', ondelete='SET NULL'))
receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='receiver_beacons') receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='receiver_beacons')
# Multi-column indices # Multi-column indices
Index('ix_receiver_beacon_receiver_id_name', 'receiver_id', 'name') Index('ix_receiver_beacons_receiver_id_name', 'receiver_id', 'name')
def __repr__(self): def __repr__(self):
return "<ReceiverBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % ( return "<ReceiverBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % (

Wyświetl plik

@ -6,10 +6,10 @@ from .base import Base
class ReceiverCoverage(Base): class ReceiverCoverage(Base):
__tablename__ = "receiver_coverage" __tablename__ = "receiver_coverages"
location_mgrs = Column(String(9), primary_key=True) location_mgrs = Column(String(9), primary_key=True)
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), primary_key=True) receiver_id = Column(Integer, ForeignKey('receivers.id', ondelete='SET NULL'), primary_key=True)
date = Column(Date, primary_key=True) date = Column(Date, primary_key=True)
max_signal_quality = Column(Float) max_signal_quality = Column(Float)

Wyświetl plik

@ -16,5 +16,5 @@ class ReceiverStats(Base):
max_distance = Column(Float) max_distance = Column(Float)
# Relations # Relations
receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL'), index=True) receiver_id = Column(Integer, ForeignKey('receivers.id', ondelete='SET NULL'), index=True)
receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='stats') receiver = relationship('Receiver', foreign_keys=[receiver_id], backref='stats')

Wyświetl plik

@ -5,7 +5,7 @@ from .base import Base
class TakeoffLanding(Base): class TakeoffLanding(Base):
__tablename__ = 'takeoff_landing' __tablename__ = 'takeoff_landings'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
@ -14,8 +14,8 @@ class TakeoffLanding(Base):
track = Column(Integer) track = Column(Integer)
# Relations # Relations
airport_id = Column(Integer, ForeignKey('airport.id', ondelete='SET NULL'), index=True) airport_id = Column(Integer, ForeignKey('airports.id', ondelete='SET NULL'), index=True)
airport = relationship('Airport', foreign_keys=[airport_id], backref='takeoff_landings') airport = relationship('Airport', foreign_keys=[airport_id], backref='takeoff_landings')
device_id = Column(Integer, ForeignKey('device.id', ondelete='SET NULL'), index=True) device_id = Column(Integer, ForeignKey('devices.id', ondelete='SET NULL'), index=True)
device = relationship('Device', foreign_keys=[device_id], backref='takeoff_landings') device = relationship('Device', foreign_keys=[device_id], backref='takeoff_landings')

Wyświetl plik

@ -57,10 +57,10 @@ class TestDB(unittest.TestCase, XmlTestMixin):
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM device_info") session.execute("DELETE FROM device_infos")
session.execute("DELETE FROM receiver") session.execute("DELETE FROM receivers")
session.execute("DELETE FROM device") session.execute("DELETE FROM devices")
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.commit() session.commit()
@mock.patch('ogn.backend.liveglidernet.datetime') @mock.patch('ogn.backend.liveglidernet.datetime')

Wyświetl plik

@ -33,11 +33,11 @@ class TestDB(unittest.TestCase):
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM device_info") session.execute("DELETE FROM device_infos")
session.execute("DELETE FROM device") session.execute("DELETE FROM devices")
session.execute("DELETE FROM receiver") session.execute("DELETE FROM receivers")
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.execute("DELETE FROM receiver_beacon") session.execute("DELETE FROM receiver_beacons")
session.commit() session.commit()
def test_update_devices(self): def test_update_devices(self):

Wyświetl plik

@ -41,10 +41,10 @@ class TestDB(unittest.TestCase):
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM takeoff_landing") session.execute("DELETE FROM takeoff_landings")
session.execute("DELETE FROM logbook") session.execute("DELETE FROM logbook")
session.execute("DELETE FROM device") session.execute("DELETE FROM devices")
session.execute("DELETE FROM airport") session.execute("DELETE FROM airports")
session.commit() session.commit()
def get_logbook_entries(self): def get_logbook_entries(self):

Wyświetl plik

@ -42,10 +42,10 @@ class TestDB(unittest.TestCase):
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.execute("DELETE FROM receiver_coverage") session.execute("DELETE FROM receiver_coverages")
session.execute("DELETE FROM device") session.execute("DELETE FROM devices")
session.execute("DELETE FROM receiver") session.execute("DELETE FROM receivers")
session.commit() session.commit()
def test_update_receiver_coverage(self): def test_update_receiver_coverage(self):

Wyświetl plik

@ -20,14 +20,14 @@ class TestDB(unittest.TestCase):
from ogn.commands.database import init from ogn.commands.database import init
init() init()
session.execute("INSERT INTO device(address) VALUES('DDEFF7')") session.execute("INSERT INTO devices(address) VALUES('DDEFF7')")
session.execute("INSERT INTO receiver(name) VALUES('Koenigsdf')") session.execute("INSERT INTO receivers(name) VALUES('Koenigsdf')")
session.execute("INSERT INTO receiver(name) VALUES('Ohlstadt')") session.execute("INSERT INTO receivers(name) VALUES('Ohlstadt')")
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.execute("DELETE FROM device") session.execute("DELETE FROM devices")
session.execute("DELETE FROM device_stats") session.execute("DELETE FROM device_stats")
session.execute("DELETE FROM receiver_stats") session.execute("DELETE FROM receiver_stats")
@ -35,13 +35,13 @@ class TestDB(unittest.TestCase):
def test_update_device_stats(self): def test_update_device_stats(self):
session = self.session session = self.session
session.execute("INSERT INTO aircraft_beacon(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',604,'2016-07-02 10:47:12')") session.execute("INSERT INTO aircraft_beacons(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',604,'2016-07-02 10:47:12')")
session.execute("INSERT INTO aircraft_beacon(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',605,'2016-07-02 10:47:32')") session.execute("INSERT INTO aircraft_beacons(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',605,'2016-07-02 10:47:32')")
session.execute("INSERT INTO aircraft_beacon(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',606,'2016-07-02 10:47:52')") session.execute("INSERT INTO aircraft_beacons(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Koenigsdf',606,'2016-07-02 10:47:52')")
session.execute("INSERT INTO aircraft_beacon(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Ohlstadt',606,'2016-07-02 10:48:12')") session.execute("INSERT INTO aircraft_beacons(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Ohlstadt',606,'2016-07-02 10:48:12')")
session.execute("INSERT INTO aircraft_beacon(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Ohlstadt',606,'2016-07-02 10:48:24')") session.execute("INSERT INTO aircraft_beacons(address, receiver_name, altitude, timestamp) VALUES('DDEFF7','Ohlstadt',606,'2016-07-02 10:48:24')")
session.execute("UPDATE aircraft_beacon SET device_id = d.id, receiver_id = r.id FROM device d, receiver r WHERE aircraft_beacon.address=d.address AND aircraft_beacon.receiver_name=r.name") session.execute("UPDATE aircraft_beacons SET device_id = d.id, receiver_id = r.id FROM devices d, receivers r WHERE aircraft_beacons.address=d.address AND aircraft_beacons.receiver_name=r.name")
update_device_stats(session, date='2016-07-02') update_device_stats(session, date='2016-07-02')
stats = session.query(DeviceStats).all() stats = session.query(DeviceStats).all()

Wyświetl plik

@ -3,7 +3,7 @@ import os
from ogn.model import TakeoffLanding from ogn.model import TakeoffLanding
from ogn.collect.takeoff_landing import update_takeoff_landing from ogn.collect.takeoff_landing import update_takeoff_landings
class TestDB(unittest.TestCase): class TestDB(unittest.TestCase):
@ -20,17 +20,17 @@ class TestDB(unittest.TestCase):
from ogn.commands.database import init from ogn.commands.database import init
init() init()
session.execute("INSERT INTO airport(name, location, altitude, style) VALUES('Benediktbeuren','0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740',609,4)") session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Benediktbeuren','0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740',609,4)")
session.execute("INSERT INTO airport(name, location, altitude, style) VALUES('Koenigsdorf','0101000020E610000061E8FED7A6EE26407F20661C10EA4740',600,5)") session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Koenigsdorf','0101000020E610000061E8FED7A6EE26407F20661C10EA4740',600,5)")
session.execute("INSERT INTO airport(name, location, altitude, style) VALUES('Ohlstadt','0101000020E6100000057E678EBF772640A142883E32D44740',655,5)") session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Ohlstadt','0101000020E6100000057E678EBF772640A142883E32D44740',655,5)")
session.execute("INSERT INTO device(address) VALUES('DDEFF7')") session.execute("INSERT INTO devices(address) VALUES('DDEFF7')")
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM takeoff_landing") session.execute("DELETE FROM takeoff_landings")
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.execute("DELETE FROM airport") session.execute("DELETE FROM airports")
session.commit() session.commit()
pass pass
@ -48,61 +48,61 @@ class TestDB(unittest.TestCase):
"""Fill the db with a winch launch where the rope breaks. The algorithm should detect one takeoff and one landing.""" """Fill the db with a winch launch where the rope breaks. The algorithm should detect one takeoff and one landing."""
session = self.session session = self.session
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',604,'2016-07-02 10:47:12',0,0,0,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',604,'2016-07-02 10:47:12',0,0,0,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',605,'2016-07-02 10:47:32',0,0,-0.096520193,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',605,'2016-07-02 10:47:32',0,0,-0.096520193,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:47:52',0,0,-0.096520193,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:47:52',0,0,-0.096520193,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:48:12',0,0,-0.096520193,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:48:12',0,0,-0.096520193,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001B2FDD2406F12640E53C762AF3E94740',606,'2016-07-02 10:48:24',284,51.85598112,0.299720599,0.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001B2FDD2406F12640E53C762AF3E94740',606,'2016-07-02 10:48:24',284,51.85598112,0.299720599,0.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F594AFDEBBF02640623583E5F5E94740',610,'2016-07-02 10:48:26',282,88.89596764,4.729489459,-0.2)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F594AFDEBBF02640623583E5F5E94740',610,'2016-07-02 10:48:26',282,88.89596764,4.729489459,-0.2)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001C0DE02D90F026401564F188F7E94740',619,'2016-07-02 10:48:27',281,94.45196562,10.66294133,-0.3)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001C0DE02D90F026401564F188F7E94740',619,'2016-07-02 10:48:27',281,94.45196562,10.66294133,-0.3)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000ABF1D24D62F02640E12D90A0F8E94740',632,'2016-07-02 10:48:28',278,88.89596764,15.59055118,-0.7)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000ABF1D24D62F02640E12D90A0F8E94740',632,'2016-07-02 10:48:28',278,88.89596764,15.59055118,-0.7)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000069FD40CC38F02640C7925F2CF9E94740',650,'2016-07-02 10:48:29',273,83.33996966,18.90779782,-0.7)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000069FD40CC38F02640C7925F2CF9E94740',650,'2016-07-02 10:48:29',273,83.33996966,18.90779782,-0.7)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000002709AF4A0FF02640C7925F2CF9E94740',670,'2016-07-02 10:48:30',272,79.63597101,20.72136144,-0.3)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000002709AF4A0FF02640C7925F2CF9E94740',670,'2016-07-02 10:48:30',272,79.63597101,20.72136144,-0.3)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000007AA85AF8E7EF2640C7925F2CF9E94740',691,'2016-07-02 10:48:31',269,79.63597101,21.02108204,-0.4)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000007AA85AF8E7EF2640C7925F2CF9E94740',691,'2016-07-02 10:48:31',269,79.63597101,21.02108204,-0.4)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000068DB43D5C2EF2640E12D90A0F8E94740',712,'2016-07-02 10:48:32',267,74.07997303,21.62560325,-0.5)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000068DB43D5C2EF2640E12D90A0F8E94740',712,'2016-07-02 10:48:32',267,74.07997303,21.62560325,-0.5)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000EDA16AE19FEF2640FBC8C014F8E94740',728,'2016-07-02 10:48:33',266,68.52397506,12.36982474,-0.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000EDA16AE19FEF2640FBC8C014F8E94740',728,'2016-07-02 10:48:33',266,68.52397506,12.36982474,-0.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000000AFCCE1C7FEF26401564F188F7E94740',733,'2016-07-02 10:48:34',266,68.52397506,2.21488443,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000000AFCCE1C7FEF26401564F188F7E94740',733,'2016-07-02 10:48:34',266,68.52397506,2.21488443,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000275633585EEF26402FFF21FDF6E94740',731,'2016-07-02 10:48:35',267,68.52397506,-3.916687833,0.2)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000275633585EEF26402FFF21FDF6E94740',731,'2016-07-02 10:48:35',267,68.52397506,-3.916687833,0.2)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000015891C3539EF26402FFF21FDF6E94740',726,'2016-07-02 10:48:36',270,74.07997303,-6.329692659,1.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000015891C3539EF26402FFF21FDF6E94740',726,'2016-07-02 10:48:36',270,74.07997303,-6.329692659,1.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000E63FA4DFBEEE264078C1CDCFFAE94740',712,'2016-07-02 10:48:39',280,88.89596764,-2.611125222,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000E63FA4DFBEEE264078C1CDCFFAE94740',712,'2016-07-02 10:48:39',280,88.89596764,-2.611125222,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000004FF9EABD0BEE2640448B6CE7FBE94740',706,'2016-07-02 10:48:43',256,90.74796697,-0.198120396,-2.5)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000004FF9EABD0BEE2640448B6CE7FBE94740',706,'2016-07-02 10:48:43',256,90.74796697,-0.198120396,-2.5)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000046B921B3A0ED264003E78C28EDE94740',706,'2016-07-02 10:48:46',218,92.59996629,-0.198120396,-1.6)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000046B921B3A0ED264003E78C28EDE94740',706,'2016-07-02 10:48:46',218,92.59996629,-0.198120396,-1.6)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000005C58F3177ED2640900C4C81DFE94740',703,'2016-07-02 10:48:48',202,96.30396495,-1.402082804,-1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000005C58F3177ED2640900C4C81DFE94740',703,'2016-07-02 10:48:48',202,96.30396495,-1.402082804,-1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000211FF46C56ED26402650D7EDC6E94740',702,'2016-07-02 10:48:51',188,100.0079636,0.502921006,-1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000211FF46C56ED26402650D7EDC6E94740',702,'2016-07-02 10:48:51',188,100.0079636,0.502921006,-1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000806DEA295FED2640347D898BB6E94740',704,'2016-07-02 10:48:53',166,100.0079636,0.802641605,-2)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000806DEA295FED2640347D898BB6E94740',704,'2016-07-02 10:48:53',166,100.0079636,0.802641605,-2)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000337D898BB6ED26401383C0CAA1E94740',703,'2016-07-02 10:48:56',133,101.8599629,-1.803403607,-1.7)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000337D898BB6ED26401383C0CAA1E94740',703,'2016-07-02 10:48:56',133,101.8599629,-1.803403607,-1.7)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000000C05593CE2ED2640FDF675E09CE94740',700,'2016-07-02 10:48:57',123,103.7119622,-2.611125222,-1.4)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000000C05593CE2ED2640FDF675E09CE94740',700,'2016-07-02 10:48:57',123,103.7119622,-2.611125222,-1.4)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F0CCF1F778EE26409FA87F2394E94740',693,'2016-07-02 10:49:00',105,111.1199596,-2.809245618,-0.6)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F0CCF1F778EE26409FA87F2394E94740',693,'2016-07-02 10:49:00',105,111.1199596,-2.809245618,-0.6)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000C9073D9B55EF2640BD5296218EE94740',687,'2016-07-02 10:49:04',97,112.9719589,-1.605283211,-0.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000C9073D9B55EF2640BD5296218EE94740',687,'2016-07-02 10:49:04',97,112.9719589,-1.605283211,-0.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000006F8104C5EF26400C24287E8CE94740',682,'2016-07-02 10:49:06',97,114.8239582,-2.407924816,-0.2)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000006F8104C5EF26400C24287E8CE94740',682,'2016-07-02 10:49:06',97,114.8239582,-2.407924816,-0.2)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A0648535A8F02640F597DD9387E94740',676,'2016-07-02 10:49:10',97,118.5279569,-1.402082804,0.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A0648535A8F02640F597DD9387E94740',676,'2016-07-02 10:49:10',97,118.5279569,-1.402082804,0.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000D70FC48C03F22640621386EE7FE94740',672,'2016-07-02 10:49:16',97,116.6759575,-1.000762002,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000D70FC48C03F22640621386EE7FE94740',672,'2016-07-02 10:49:16',97,116.6759575,-1.000762002,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A72C431CEBF22640CB7F48BF7DE94740',666,'2016-07-02 10:49:20',84,114.8239582,-1.605283211,-1.5)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A72C431CEBF22640CB7F48BF7DE94740',666,'2016-07-02 10:49:20',84,114.8239582,-1.605283211,-1.5)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000BFCAA145B6F32640BD5296218EE94740',662,'2016-07-02 10:49:24',49,111.1199596,-1.203962408,-1.5)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000BFCAA145B6F32640BD5296218EE94740',662,'2016-07-02 10:49:24',49,111.1199596,-1.203962408,-1.5)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000074DA40A70DF4264077E09C11A5E94740',659,'2016-07-02 10:49:27',23,107.4159609,-1.402082804,-1.4)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000074DA40A70DF4264077E09C11A5E94740',659,'2016-07-02 10:49:27',23,107.4159609,-1.402082804,-1.4)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009AE3EFF11CF42640347D898BB6E94740',656,'2016-07-02 10:49:29',4,101.8599629,-0.797561595,-1.8)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009AE3EFF11CF42640347D898BB6E94740',656,'2016-07-02 10:49:29',4,101.8599629,-0.797561595,-1.8)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000074DA40A70DF426402650D7EDC6E94740',654,'2016-07-02 10:49:31',347,101.8599629,-1.706883414,-1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000074DA40A70DF426402650D7EDC6E94740',654,'2016-07-02 10:49:31',347,101.8599629,-1.706883414,-1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000156A4DF38EF3264086EE7F6DEAE94740',649,'2016-07-02 10:49:36',312,98.15596427,-1.503683007,-1.4)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000156A4DF38EF3264086EE7F6DEAE94740',649,'2016-07-02 10:49:36',312,98.15596427,-1.503683007,-1.4)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000FAEDEBC039F32640E53C762AF3E94740',644,'2016-07-02 10:49:38',295,96.30396495,-3.012446025,-1.2)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000FAEDEBC039F32640E53C762AF3E94740',644,'2016-07-02 10:49:38',295,96.30396495,-3.012446025,-1.2)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000B04A0F30E0F22640FBC8C014F8E94740',635,'2016-07-02 10:49:40',284,94.45196562,-5.125730251,-0.7)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000B04A0F30E0F22640FBC8C014F8E94740',635,'2016-07-02 10:49:40',284,94.45196562,-5.125730251,-0.7)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F38B25BF58F22640448B6CE7FBE94740',623,'2016-07-02 10:49:43',279,92.59996629,-2.809245618,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000F38B25BF58F22640448B6CE7FBE94740',623,'2016-07-02 10:49:43',279,92.59996629,-2.809245618,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A5E8482EFFF12640DC1EAA16FEE94740',617,'2016-07-02 10:49:45',279,88.89596764,-3.312166624,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A5E8482EFFF12640DC1EAA16FEE94740',617,'2016-07-02 10:49:45',279,88.89596764,-3.312166624,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009F17012859F12640F0AAF40003EA4740',607,'2016-07-02 10:49:49',279,81.48797034,-1.300482601,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000009F17012859F12640F0AAF40003EA4740',607,'2016-07-02 10:49:49',279,81.48797034,-1.300482601,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000004B5658830AF12640873E323005EA4740',607,'2016-07-02 10:49:51',278,74.07997303,-0.294640589,-0.1)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000004B5658830AF12640873E323005EA4740',607,'2016-07-02 10:49:51',278,74.07997303,-0.294640589,-0.1)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A0648535A8F0264006373FEB07EA4740',605,'2016-07-02 10:49:54',280,61.11597775,-0.096520193,0.5)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000A0648535A8F0264006373FEB07EA4740',605,'2016-07-02 10:49:54',280,61.11597775,-0.096520193,0.5)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000C74B378941F02640E88C28ED0DEA4740',604,'2016-07-02 10:49:58',292,48.15198247,0.101600203,0.4)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E6100000C74B378941F02640E88C28ED0DEA4740',604,'2016-07-02 10:49:58',292,48.15198247,0.101600203,0.4)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001B5A643BDFEF264045DB1EAA16EA4740',604,'2016-07-02 10:50:04',302,25.92799056,0.203200406,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E61000001B5A643BDFEF264045DB1EAA16EA4740',604,'2016-07-02 10:50:04',302,25.92799056,0.203200406,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000042D2948AB3EF264074029A081BEA4740',604,'2016-07-02 10:50:10',300,5.555997978,0.101600203,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000042D2948AB3EF264074029A081BEA4740',604,'2016-07-02 10:50:10',300,5.555997978,0.101600203,0)")
session.execute("INSERT INTO aircraft_beacon(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000013AB192CAFEF264074029A081BEA4740',603,'2016-07-02 10:50:16',0,0,-0.096520193,0)") session.execute("INSERT INTO aircraft_beacons(address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('DDEFF7','0101000020E610000013AB192CAFEF264074029A081BEA4740',603,'2016-07-02 10:50:16',0,0,-0.096520193,0)")
session.execute("UPDATE aircraft_beacon SET device_id = d.id FROM device d WHERE d.address='DDEFF7'") session.execute("UPDATE aircraft_beacons SET device_id = d.id FROM devices d WHERE d.address='DDEFF7'")
session.commit() session.commit()
# find the takeoff and the landing # find the takeoff and the landing
update_takeoff_landing(session) update_takeoff_landings(session)
self.assertEqual(self.count_takeoff_and_landings(), 2) self.assertEqual(self.count_takeoff_and_landings(), 2)
# we should not find the takeoff and the landing again # we should not find the takeoff and the landing again
update_takeoff_landing(session) update_takeoff_landings(session)
self.assertEqual(self.count_takeoff_and_landings(), 2) self.assertEqual(self.count_takeoff_and_landings(), 2)

Wyświetl plik

@ -21,8 +21,8 @@ class TestDB(unittest.TestCase):
def tearDown(self): def tearDown(self):
session = self.session session = self.session
session.execute("DELETE FROM aircraft_beacon") session.execute("DELETE FROM aircraft_beacons")
session.execute("DELETE FROM receiver_beacon") session.execute("DELETE FROM receiver_beacons")
session.commit() session.commit()
def test_convert_logfile(self): def test_convert_logfile(self):