2019-02-10 17:39:06 +00:00
from flask . cli import AppGroup
import click
from datetime import datetime
from tqdm import tqdm
from ogn_python . commands . database import get_database_days
2019-03-06 20:11:46 +00:00
from ogn_python . collect . stats import create_device_stats , create_receiver_stats , create_relation_stats , create_country_stats , \
2019-02-10 17:39:06 +00:00
update_qualities , update_receivers as update_receivers_command , update_devices as update_devices_command , \
update_device_stats_jumps
from ogn_python . collect . ognrange import create_receiver_coverage
from ogn_python import db
user_cli = AppGroup ( ' stats ' )
user_cli . help = " Handling of statistical data. "
@user_cli.command ( ' create ' )
@click.argument ( ' start ' )
@click.argument ( ' end ' )
def create ( start , end ) :
""" Create DeviceStats, ReceiverStats and RelationStats. """
days = get_database_days ( start , end )
pbar = tqdm ( days )
for single_date in pbar :
pbar . set_description ( datetime . strftime ( single_date , ' % Y- % m- %d ' ) )
result = create_device_stats ( session = db . session , date = single_date )
result = update_device_stats_jumps ( session = db . session , date = single_date )
result = create_receiver_stats ( session = db . session , date = single_date )
result = create_relation_stats ( session = db . session , date = single_date )
result = update_qualities ( session = db . session , date = single_date )
2019-03-06 20:11:46 +00:00
@user_cli.command ( ' create_country ' )
@click.argument ( ' start ' )
@click.argument ( ' end ' )
def create_country ( start , end ) :
""" Create CountryStats. """
days = get_database_days ( start , end )
pbar = tqdm ( days )
for single_date in pbar :
pbar . set_description ( datetime . strftime ( single_date , ' % Y- % m- %d ' ) )
result = create_country_stats ( session = db . session , date = single_date )
from ogn_python . model import *
@user_cli.command ( ' update_devices_name ' )
def update_devices_name ( ) :
""" Update Devices name. """
device_ids = db . session . query ( Device . id ) . all ( )
for device_id in tqdm ( device_ids ) :
db . session . execute ( " update devices d set name = sq.name from ( select * from aircraft_beacons ab where ab.device_id = {} limit 1) sq where d.id = sq.device_id and d.name is null or d.name = ' ICA3D3CC4 ' ; " . format ( device_id [ 0 ] ) )
db . session . commit ( )
2019-02-10 17:39:06 +00:00
@user_cli.command ( ' update_receivers ' )
def update_receivers ( ) :
""" Update receivers with data from stats. """
result = update_receivers_command ( session = db . session )
print ( result )
@user_cli.command ( ' update_devices ' )
def update_devices ( ) :
""" Update devices with data from stats. """
result = update_devices_command ( session = db . session )
print ( result )
2019-03-06 20:11:46 +00:00
@user_cli.command ( ' update_mgrs ' )
@click.argument ( ' start ' )
@click.argument ( ' end ' )
def update_mgrs ( start , end ) :
""" Create location_mgrs_short. """
days = get_database_days ( start , end )
pbar = tqdm ( days )
for single_date in pbar :
datestr = datetime . strftime ( single_date , ' % Y- % m- %d ' )
pbar . set_description ( datestr )
for pbar2 in tqdm ( [ " {:02d} : {:02d} " . format ( hh , mm ) for hh in range ( 0 , 24 ) for mm in range ( 0 , 60 ) ] ) :
sql = """
UPDATE aircraft_beacons
SET location_mgrs_short = left ( location_mgrs , 5 ) | | substring ( location_mgrs , 6 , 2 ) | | substring ( location_mgrs , 11 , 2 )
WHERE timestamp BETWEEN ' {0} {1} :00 ' and ' {0} {1} :59 ' AND location_mgrs_short IS NULL ;
""" .format(datestr, pbar2)
#print(sql)
db . session . execute ( sql )
db . session . commit ( )
2019-02-10 17:39:06 +00:00
@user_cli.command ( ' create_ognrange ' )
@click.argument ( ' start ' )
@click.argument ( ' end ' )
def create_ognrange ( start = None , end = None ) :
""" Create stats for Melissas ognrange. """
days = get_database_days ( start , end )
pbar = tqdm ( days )
for single_date in pbar :
pbar . set_description ( datetime . strftime ( single_date , ' % Y- % m- %d ' ) )
result = create_receiver_coverage ( session = db . session , date = single_date )