mirror of https://github.com/zulip/zulip.git
Add PEP-484 type annotations to analytics/.
This commit is contained in:
parent
32f8f85f8b
commit
b8c82d5b43
|
@ -22,7 +22,7 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
# Calculate 10min, 2hrs, 12hrs, 1day, 2 business days (TODO business days), 1 week bucket of stats
|
# Calculate 10min, 2hrs, 12hrs, 1day, 2 business days (TODO business days), 1 week bucket of stats
|
||||||
hour_buckets = [0.16, 2, 12, 24, 48, 168]
|
hour_buckets = [0.16, 2, 12, 24, 48, 168]
|
||||||
user_info = defaultdict(dict)
|
user_info = defaultdict(dict) # type: Dict[str, Dict[float, List[str]]]
|
||||||
|
|
||||||
for last_presence in users:
|
for last_presence in users:
|
||||||
if last_presence.status == UserPresence.IDLE:
|
if last_presence.status == UserPresence.IDLE:
|
||||||
|
|
|
@ -27,15 +27,15 @@ def compute_stats(log_level):
|
||||||
"bitcoin@mit.edu", "lp@mit.edu", "clocks@mit.edu",
|
"bitcoin@mit.edu", "lp@mit.edu", "clocks@mit.edu",
|
||||||
"root@mit.edu", "nagios@mit.edu",
|
"root@mit.edu", "nagios@mit.edu",
|
||||||
"www-data|local-realm@mit.edu"])
|
"www-data|local-realm@mit.edu"])
|
||||||
user_counts = {}
|
user_counts = {} # type: Dict[str, Dict[str, int]]
|
||||||
for m in mit_query.select_related("sending_client", "sender"):
|
for m in mit_query.select_related("sending_client", "sender"):
|
||||||
email = m.sender.email
|
email = m.sender.email
|
||||||
user_counts.setdefault(email, {})
|
user_counts.setdefault(email, {})
|
||||||
user_counts[email].setdefault(m.sending_client.name, 0)
|
user_counts[email].setdefault(m.sending_client.name, 0)
|
||||||
user_counts[email][m.sending_client.name] += 1
|
user_counts[email][m.sending_client.name] += 1
|
||||||
|
|
||||||
total_counts = {}
|
total_counts = {} # type: Dict[str, int]
|
||||||
total_user_counts = {}
|
total_user_counts = {} # type: Dict[str, int]
|
||||||
for email, counts in user_counts.items():
|
for email, counts in user_counts.items():
|
||||||
total_user_counts.setdefault(email, 0)
|
total_user_counts.setdefault(email, 0)
|
||||||
for client_name, count in counts.items():
|
for client_name, count in counts.items():
|
||||||
|
@ -44,7 +44,7 @@ def compute_stats(log_level):
|
||||||
total_user_counts[email] += count
|
total_user_counts[email] += count
|
||||||
|
|
||||||
logging.debug("%40s | %10s | %s" % ("User", "Messages", "Percentage Zulip"))
|
logging.debug("%40s | %10s | %s" % ("User", "Messages", "Percentage Zulip"))
|
||||||
top_percents = {}
|
top_percents = {} # type: Dict[int, float]
|
||||||
for size in [10, 25, 50, 100, 200, len(total_user_counts.keys())]:
|
for size in [10, 25, 50, 100, 200, len(total_user_counts.keys())]:
|
||||||
top_percents[size] = 0.0
|
top_percents[size] = 0.0
|
||||||
for i, email in enumerate(sorted(total_user_counts.keys(),
|
for i, email in enumerate(sorted(total_user_counts.keys(),
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from __future__ import division
|
from __future__ import division
|
||||||
|
from typing import *
|
||||||
|
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.template import RequestContext, loader
|
from django.template import RequestContext, loader
|
||||||
from django.utils.html import mark_safe
|
from django.utils.html import mark_safe
|
||||||
|
@ -76,7 +78,7 @@ def get_realm_day_counts():
|
||||||
rows = dictfetchall(cursor)
|
rows = dictfetchall(cursor)
|
||||||
cursor.close()
|
cursor.close()
|
||||||
|
|
||||||
counts = defaultdict(dict)
|
counts = defaultdict(dict) # type: Dict[str, Dict[int, int]]
|
||||||
for row in rows:
|
for row in rows:
|
||||||
counts[row['domain']][row['age']] = row['cnt']
|
counts[row['domain']][row['age']] = row['cnt']
|
||||||
|
|
||||||
|
@ -620,7 +622,8 @@ def raw_user_activity_table(records):
|
||||||
return make_table(title, cols, rows)
|
return make_table(title, cols, rows)
|
||||||
|
|
||||||
def get_user_activity_summary(records):
|
def get_user_activity_summary(records):
|
||||||
summary = {}
|
# type: (Any) -> Any
|
||||||
|
summary = {} # type: Dict[str, Dict[str, Any]]
|
||||||
def update(action, record):
|
def update(action, record):
|
||||||
if action not in summary:
|
if action not in summary:
|
||||||
summary[action] = dict(
|
summary[action] = dict(
|
||||||
|
@ -817,8 +820,9 @@ def realm_user_summary_table(all_records, admin_emails):
|
||||||
|
|
||||||
@zulip_internal
|
@zulip_internal
|
||||||
def get_realm_activity(request, realm):
|
def get_realm_activity(request, realm):
|
||||||
data = []
|
# type: (Any, Any) -> Any
|
||||||
all_user_records = {}
|
data = [] # type: List[Tuple[str, str]]
|
||||||
|
all_user_records = {} # type: Dict[str, Any]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
admins = get_realm(realm).get_admin_users()
|
admins = get_realm(realm).get_admin_users()
|
||||||
|
@ -860,7 +864,7 @@ def get_realm_activity(request, realm):
|
||||||
def get_user_activity(request, email):
|
def get_user_activity(request, email):
|
||||||
records = get_user_activity_records_for_email(email)
|
records = get_user_activity_records_for_email(email)
|
||||||
|
|
||||||
data = []
|
data = [] # type: List[Tuple[str, str]]
|
||||||
user_summary = get_user_activity_summary(records)
|
user_summary = get_user_activity_summary(records)
|
||||||
content = user_activity_summary_table(user_summary)
|
content = user_activity_summary_table(user_summary)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue