Remove show commands

pull/68/head
Konstantin Gründger 2019-01-01 20:11:41 +01:00
rodzic 64e89c3cfb
commit 17bc9ed691
6 zmienionych plików z 7 dodań i 249 usunięć

Wyświetl plik

@ -95,7 +95,7 @@ available commands:
create_gaps2d Create 'gaps' from logfile tables. create_gaps2d Create 'gaps' from logfile tables.
file_export Export separate logfile tables to csv files. They can be used for fast bulk import with sql COPY command. file_export Export separate logfile tables to csv files. They can be used for fast bulk import with sql COPY command.
file_import Import APRS logfiles into separate logfile tables. file_import Import APRS logfiles into separate logfile tables.
transfer Transfer beacons from separate logfile tables to beacon table. transfer_aircraft_beaconsTransfer beacons from separate logfile tables to beacon table.
update Update beacons (add foreign keys, compute distance, bearing, ags, etc.) in separate logfile tables. update Update beacons (add foreign keys, compute distance, bearing, ags, etc.) in separate logfile tables.
[db] [db]
@ -108,6 +108,9 @@ available commands:
update_country_codes Update country codes of all receivers. update_country_codes Update country codes of all receivers.
upgrade Upgrade database to the latest version. upgrade Upgrade database to the latest version.
[flights]
flights2d Compute flights.
[gateway] [gateway]
run Run the aprs client. run Run the aprs client.
@ -124,23 +127,6 @@ available commands:
add_missing_receivers Update receivers with data from stats. add_missing_receivers Update receivers with data from stats.
create_flights Create Flights. create_flights Create Flights.
create_stats Create DeviceStats, ReceiverStats and RelationStats. create_stats Create DeviceStats, ReceiverStats and RelationStats.
[show.airport]
list_all Show a list of all airports.
[show.deviceinfos]
stats Show some stats on registered devices.
[show.devices]
aircraft_type_stats Show stats about aircraft types used by devices.
hardware_stats Show stats about hardware version used by devices.
software_stats Show stats about software version used by devices.
stealth_stats Show stats about stealth flag set by devices.
[show.receiver]
hardware_stats Show some statistics of receiver hardware.
list_all Show a list of all receivers.
software_stats Show some statistics of receiver software.
``` ```
Only the command `logbook.compute` requires a running task server (celery) at the moment. Only the command `logbook.compute` requires a running task server (celery) at the moment.

Wyświetl plik

@ -1,12 +1,9 @@
from .database import manager as database_manager from .database import manager as database_manager
from .bulkimport import manager as bulkimport_manager from .bulkimport import manager as bulkimport_manager
from .igcexport import manager as igcexport_manager from .igcexport import manager as igcexport_manager
from .showairport import manager as show_airport_manager
from .showreceiver import manager as show_receiver_manager
from .showdevices import manager as show_devices_manager
from .showdeviceinfos import manager as show_deviceinfos_manager
from .logbook import manager as logbook_manager from .logbook import manager as logbook_manager
from ogn.commands.stats import manager as stats_manager from .stats import manager as stats_manager
from .flights import manager as flights_manager
from manager import Manager from manager import Manager
@ -15,9 +12,6 @@ manager = Manager()
manager.merge(database_manager, namespace='db') manager.merge(database_manager, namespace='db')
manager.merge(bulkimport_manager, namespace='bulkimport') manager.merge(bulkimport_manager, namespace='bulkimport')
manager.merge(igcexport_manager, namespace='igcexport') manager.merge(igcexport_manager, namespace='igcexport')
manager.merge(show_airport_manager, namespace='show.airport')
manager.merge(show_receiver_manager, namespace='show.receiver')
manager.merge(show_devices_manager, namespace='show.devices')
manager.merge(show_deviceinfos_manager, namespace='show.deviceinfos')
manager.merge(logbook_manager, namespace='logbook') manager.merge(logbook_manager, namespace='logbook')
manager.merge(stats_manager, namespace='stats') manager.merge(stats_manager, namespace='stats')
manager.merge(flights_manager, namespace='flights')

Wyświetl plik

@ -1,26 +0,0 @@
from manager import Manager
from ogn.commands.dbutils import session
from ogn.model import Airport
from sqlalchemy import and_, between
manager = Manager()
@manager.arg('country_code', help='filter by country code, eg. "de" for germany')
@manager.command
def list_all(country_code=None):
"""Show a list of all airports."""
or_args = []
if country_code is None:
or_args = [between(Airport.style, 2, 5)]
else:
or_args = [and_(between(Airport.style, 2, 5),
Airport.country_code == country_code)]
query = session.query(Airport) \
.order_by(Airport.name) \
.filter(*or_args)
print('--- Airports ---')
for airport in query.all():
print(airport.name)

Wyświetl plik

@ -1,63 +0,0 @@
from manager import Manager
from ogn.commands.dbutils import session
from ogn.model import DeviceInfoOrigin
from ogn.model.device_info import DeviceInfo
from sqlalchemy import func, and_, true, false
manager = Manager()
def get_devices_stats(session):
sq_default = session.query(DeviceInfo.address) \
.filter(and_(DeviceInfo.tracked == true(), DeviceInfo.identified == true())) \
.subquery()
sq_nt = session.query(DeviceInfo.address) \
.filter(and_(DeviceInfo.tracked == false(), DeviceInfo.identified == true())) \
.subquery()
sq_ni = session.query(DeviceInfo.address) \
.filter(and_(DeviceInfo.tracked == true(), DeviceInfo.identified == false())) \
.subquery()
sq_ntni = session.query(DeviceInfo.address) \
.filter(and_(DeviceInfo.tracked == false(), DeviceInfo.identified == false())) \
.subquery()
query = session.query(DeviceInfo.address_origin,
func.count(DeviceInfo.id),
func.count(sq_default.c.address),
func.count(sq_nt.c.address),
func.count(sq_ni.c.address),
func.count(sq_ntni.c.address)) \
.outerjoin(sq_default, sq_default.c.address == DeviceInfo.address) \
.outerjoin(sq_nt, sq_nt.c.address == DeviceInfo.address) \
.outerjoin(sq_ni, sq_ni.c.address == DeviceInfo.address) \
.outerjoin(sq_ntni, sq_ntni.c.address == DeviceInfo.address) \
.group_by(DeviceInfo.address_origin)
stats = {}
for [address_origin, device_count, default_count, nt_count, ni_count, ntni_count] in query.all():
origin = DeviceInfoOrigin(address_origin).name()
stats[origin] = {'device_count': device_count,
'default_count': default_count,
'nt_count': nt_count,
'ni_count': ni_count,
'ntni_count': ntni_count}
return stats
@manager.command
def stats():
"""Show some stats on registered devices."""
print('--- Devices ---')
stats = get_devices_stats(session)
for origin in stats:
print('{:12s} Total:{:5d} - default:{:3d}, just not tracked:{:3d}, just not identified:{:3d}, not tracked & not identified: {:3d}'
.format(origin,
stats[origin]['device_count'],
stats[origin]['default_count'],
stats[origin]['nt_count'],
stats[origin]['ni_count'],
stats[origin]['ntni_count']))

Wyświetl plik

@ -1,56 +0,0 @@
from manager import Manager
from ogn.commands.dbutils import session
from ogn.model import Device, AircraftType
from sqlalchemy import func
manager = Manager()
@manager.command
def aircraft_type_stats():
"""Show stats about aircraft types used by devices."""
aircraft_type_query = session.query(Device.aircraft_type,
func.count(Device.id)) \
.group_by(Device.aircraft_type) \
.order_by(func.count(Device.id).desc())
print("--- Aircraft types ---")
for [aircraft_type, count] in aircraft_type_query.all():
at = AircraftType(aircraft_type)
print("{}: {}".format(at.name(), count))
@manager.command
def stealth_stats():
"""Show stats about stealth flag set by devices."""
stealth_query = session.query(Device.stealth,
func.count(Device.id)) \
.group_by(Device.stealth) \
.order_by(func.count(Device.id).desc())
print("--- Stealth ---")
for [is_stealth, count] in stealth_query.all():
print("{}: {}".format(is_stealth, count))
@manager.command
def software_stats():
"""Show stats about software version used by devices."""
software_query = session.query(Device.software_version,
func.count(Device.id)) \
.group_by(Device.software_version) \
.order_by(func.count(Device.id).desc())
print("--- Software version ---")
for [software_version, count] in software_query.all():
print("{}: {}".format(software_version, count))
@manager.command
def hardware_stats():
"""Show stats about hardware version used by devices."""
hardware_query = session.query(Device.hardware_version,
func.count(Device.id)) \
.group_by(Device.hardware_version) \
.order_by(func.count(Device.id).desc())
print("\n--- Hardware version ---")
for [hardware_version, count] in hardware_query.all():
print("{}: {}".format(hardware_version, count))

Wyświetl plik

@ -1,77 +0,0 @@
from datetime import datetime, timedelta
from manager import Manager
from ogn.commands.dbutils import session
from ogn.model import ReceiverBeacon, Receiver
from sqlalchemy import distinct, and_
from sqlalchemy.sql import func
manager = Manager()
receiver_beacons_per_day = 24 * 60 / 5
@manager.command
def list_all():
"""Show a list of all receivers."""
timestamp_24h_ago = datetime.utcnow() - timedelta(days=1)
sq = session.query(distinct(ReceiverBeacon.name).label('name'),
func.max(ReceiverBeacon.timestamp).label('lastseen'),
func.count(ReceiverBeacon.name).label('messages_count')) \
.filter(ReceiverBeacon.timestamp > timestamp_24h_ago) \
.group_by(ReceiverBeacon.name).subquery()
query = session.query(Receiver, sq.c.messages_count).\
filter(Receiver.name == sq.c.name).\
order_by(Receiver.name)
print('--- Receivers ---')
for [receiver, messages_count] in query.all():
print('%9s (%2s): %3d%% avail, %s, %s ' % (receiver.name,
receiver.country_code,
100.0 * float(messages_count / receiver_beacons_per_day),
receiver.version,
receiver.platform))
@manager.command
def software_stats():
"""Show some statistics of receiver software."""
timestamp_24h_ago = datetime.utcnow() - timedelta(days=1)
sq = session.query(ReceiverBeacon.name, func.max(ReceiverBeacon.timestamp).label('lastseen')).\
filter(ReceiverBeacon.timestamp > timestamp_24h_ago).\
group_by(ReceiverBeacon.name).\
subquery()
versions = session.query(distinct(ReceiverBeacon.version), func.count(ReceiverBeacon.version)).\
filter(and_(ReceiverBeacon.name == sq.c.name, ReceiverBeacon.timestamp == sq.c.lastseen)).\
group_by(ReceiverBeacon.version).\
order_by(ReceiverBeacon.version)
print('--- Versions ---')
for [version, count] in versions.all():
print('%5s: %s' % (version, count))
@manager.command
def hardware_stats():
"""Show some statistics of receiver hardware."""
timestamp_24h_ago = datetime.utcnow() - timedelta(days=1)
sq = session.query(ReceiverBeacon.name, func.max(ReceiverBeacon.timestamp).label('lastseen')).\
filter(ReceiverBeacon.timestamp > timestamp_24h_ago).\
group_by(ReceiverBeacon.name).\
subquery()
platforms = session.query(distinct(ReceiverBeacon.platform), func.count(ReceiverBeacon.platform)).\
filter(and_(ReceiverBeacon.name == sq.c.name, ReceiverBeacon.timestamp == sq.c.lastseen)).\
group_by(ReceiverBeacon.platform).\
order_by(ReceiverBeacon.platform)
print('--- Platforms ---')
for [platform, count] in platforms.all():
print('%7s: %s' % (platform, count))