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.
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.
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.
[db]
@ -108,6 +108,9 @@ available commands:
update_country_codes Update country codes of all receivers.
upgrade Upgrade database to the latest version.
[flights]
flights2d Compute flights.
[gateway]
run Run the aprs client.
@ -124,23 +127,6 @@ available commands:
add_missing_receivers Update receivers with data from stats.
create_flights Create Flights.
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.

Wyświetl plik

@ -1,12 +1,9 @@
from .database import manager as database_manager
from .bulkimport import manager as bulkimport_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 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
@ -15,9 +12,6 @@ manager = Manager()
manager.merge(database_manager, namespace='db')
manager.merge(bulkimport_manager, namespace='bulkimport')
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(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))