pull/19/head
Konstantin Gründger 2015-12-01 23:04:13 +01:00 zatwierdzone przez Fabian P. Schmidt
rodzic 04137acaf6
commit 93ac44e574
1 zmienionych plików z 35 dodań i 2 usunięć

Wyświetl plik

@ -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))