kopia lustrzana https://github.com/glidernet/ogn-python
Merge pull request #19 from kerel-fs/model/addressorigin
Change AddressOrigin type to Enum; Add ddb statspull/20/merge
commit
3f41c6b808
|
@ -14,7 +14,7 @@ def update_ddb_from_ogn():
|
|||
logger.info("Update ddb data from ogn.")
|
||||
|
||||
app.session.query(Device) \
|
||||
.filter(Device.address_origin == AddressOrigin.ogn_ddb) \
|
||||
.filter(AddressOrigin(Device.address_origin) is AddressOrigin.ogn_ddb) \
|
||||
.delete()
|
||||
|
||||
devices = get_ddb()
|
||||
|
@ -31,7 +31,7 @@ def update_ddb_from_file():
|
|||
logger.info("Import ddb data from file.")
|
||||
|
||||
app.session.query(Device) \
|
||||
.filter(Device.address_origin == AddressOrigin.userdefined) \
|
||||
.filter(AddressOrigin(Device.address_origin) is AddressOrigin.userdefined) \
|
||||
.delete()
|
||||
|
||||
devices = get_ddb('ogn/custom_ddb.txt')
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
from ogn.model import Base
|
||||
from sqlalchemy import func, and_, true, false
|
||||
|
||||
from ogn.model import Base, AddressOrigin, Device
|
||||
from ogn.collect.fetchddb import update_ddb_from_ogn, update_ddb_from_file
|
||||
from ogn.commands.dbutils import engine
|
||||
from ogn.commands.dbutils import engine, session
|
||||
|
||||
from manager import Manager
|
||||
manager = Manager()
|
||||
|
@ -29,3 +31,34 @@ def update_ddb_file():
|
|||
result = update_ddb_from_file.delay()
|
||||
counter = result.get()
|
||||
print("Imported %i devices." % counter)
|
||||
|
||||
|
||||
@manager.command
|
||||
def stats():
|
||||
"""Show some devices stats."""
|
||||
sq_nt = session.query(Device.address) \
|
||||
.filter(and_(Device.tracked == false(), Device.identified == true())) \
|
||||
.subquery()
|
||||
|
||||
sq_ni = session.query(Device.address) \
|
||||
.filter(and_(Device.tracked == true(), Device.identified == false())) \
|
||||
.subquery()
|
||||
|
||||
sq_ntni = session.query(Device.address) \
|
||||
.filter(and_(Device.tracked == false(), Device.identified == false())) \
|
||||
.subquery()
|
||||
|
||||
query = session.query(Device.address_origin, func.count(Device.id), func.count(sq_nt.c.address), func.count(sq_ni.c.address), func.count(sq_ntni.c.address)) \
|
||||
.outerjoin(sq_nt, sq_nt.c.address == Device.address) \
|
||||
.outerjoin(sq_ni, sq_ni.c.address == Device.address) \
|
||||
.outerjoin(sq_ntni, sq_ntni.c.address == Device.address) \
|
||||
.group_by(Device.address_origin)
|
||||
|
||||
print('--- Devices ---')
|
||||
for [address_origin, device_count, nt_count, ni_count, ntni_count] in query.all():
|
||||
print('{:12s} Total:{:5d} - not tracked:{:3d}, not identified:{:3d}, not tracked & not identified: {:3d}'
|
||||
.format(AddressOrigin(address_origin).name,
|
||||
device_count,
|
||||
nt_count,
|
||||
ni_count,
|
||||
ntni_count))
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
class AddressOrigin:
|
||||
from enum import Enum, unique
|
||||
|
||||
|
||||
@unique
|
||||
class AddressOrigin(Enum):
|
||||
ogn_ddb = 1
|
||||
flarmnet = 2
|
||||
userdefined = 3
|
||||
|
|
Ładowanie…
Reference in New Issue