1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00

Merge pull request #417 from peeringdb/pr_stats_formatting

add format to pdb_stats
This commit is contained in:
Matt Griswold
2019-01-29 02:11:31 -06:00
committed by GitHub

View File

@@ -1,10 +1,13 @@
from __future__ import absolute_import, division, print_function
import datetime
import json
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from reversion.models import Version, Revision
import reversion import reversion
import datetime from reversion.models import Version, Revision
from peeringdb_server.models import REFTAG_MAP, UTC from peeringdb_server.models import REFTAG_MAP, UTC
@@ -20,6 +23,8 @@ class Command(BaseCommand):
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument("--date", action="store", default=None, parser.add_argument("--date", action="store", default=None,
help="generate stats for this date") help="generate stats for this date")
parser.add_argument("--format", action="store", default="text",
help="output format to use")
def status_at_date(self, obj, dt): def status_at_date(self, obj, dt):
versions = Version.objects.get_for_object(obj) versions = Version.objects.get_for_object(obj)
@@ -38,10 +43,7 @@ class Command(BaseCommand):
dt = datetime.datetime.now() dt = datetime.datetime.now()
dt = dt.replace(hour=23, minute=23, second=59, tzinfo=UTC()) dt = dt.replace(hour=23, minute=23, second=59, tzinfo=UTC())
date = dt.replace(tzinfo=None).strftime("%Y-%m-%d")
print("{}".format(dt.replace(tzinfo=None).strftime("%Y-%m-%d")))
print("-------------")
stats = {"users": 0} stats = {"users": 0}
for tag in self.tags: for tag in self.tags:
@@ -51,10 +53,19 @@ class Command(BaseCommand):
if self.status_at_date(obj, dt) == "ok": if self.status_at_date(obj, dt) == "ok":
stats[tag] += 1 stats[tag] += 1
print "{}: {}".format(tag, stats[tag])
for user in get_user_model().objects.filter(created__lte=dt): for user in get_user_model().objects.filter(created__lte=dt):
if user.is_verified: if user.is_verified:
stats["users"] += 1 stats["users"] += 1
print "users: {}".format(stats["users"]) codec = options.get("format")
if codec == "text":
print(date)
print("-------------")
for each in stats.keys():
print("{}: {}".format(each, stats[each]))
elif codec == "json":
print(json.dumps({date: stats}))
else:
raise Exception("unknown format {}".format(codec))