kopia lustrzana https://github.com/glidernet/ogn-python
Fix show.receiver statistics.
Use current time for calculations, not the start-time of celery.pull/12/head
rodzic
fe83440eb4
commit
b391fca45b
|
@ -1,26 +1,29 @@
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy import distinct, and_
|
||||
|
||||
from ogn.model import ReceiverBeacon, Receiver
|
||||
|
||||
from ogn.commands.dbutils import session
|
||||
|
||||
back_24h = datetime.utcnow() - timedelta(days=1)
|
||||
receiver_messages_per_24h = 24 * 60 / 5
|
||||
|
||||
from manager import Manager
|
||||
manager = Manager()
|
||||
|
||||
receiver_beacons_per_day = 24 * 60 / 5
|
||||
|
||||
|
||||
@manager.command
|
||||
def list_all():
|
||||
"""Show a list of all receivers."""
|
||||
sq = session.query(distinct(ReceiverBeacon.name).label('name'), func.max(ReceiverBeacon.timestamp).label('lastseen'), func.count(ReceiverBeacon.name).label('messages_count')).\
|
||||
filter(ReceiverBeacon.timestamp > back_24h).\
|
||||
group_by(ReceiverBeacon.name).\
|
||||
subquery()
|
||||
|
||||
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).\
|
||||
|
@ -28,14 +31,21 @@ def list_all():
|
|||
|
||||
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_messages_per_24h), receiver.version, receiver.platform))
|
||||
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 > back_24h).\
|
||||
filter(ReceiverBeacon.timestamp > timestamp_24h_ago).\
|
||||
group_by(ReceiverBeacon.name).\
|
||||
subquery()
|
||||
|
||||
|
@ -52,8 +62,11 @@ def software_stats():
|
|||
@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 > back_24h).\
|
||||
filter(ReceiverBeacon.timestamp > timestamp_24h_ago).\
|
||||
group_by(ReceiverBeacon.name).\
|
||||
subquery()
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue