mirror of
https://github.com/zulip/zulip.git
synced 2025-11-21 15:09:34 +00:00
analytics: Replace get_user_profile_by email in client_activity.
This commit is contained in:
@@ -4,28 +4,32 @@ from __future__ import print_function
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from django.core.management.base import BaseCommand
|
|
||||||
from django.db.models import Count, QuerySet
|
from django.db.models import Count, QuerySet
|
||||||
from django.utils.timezone import now as timezone_now
|
from django.utils.timezone import now as timezone_now
|
||||||
|
|
||||||
from zerver.models import UserActivity, UserProfile, Realm, \
|
from zerver.lib.management import ZulipBaseCommand
|
||||||
get_realm, get_user_profile_by_email
|
from zerver.models import UserActivity
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(ZulipBaseCommand):
|
||||||
help = """Report rough client activity globally, for a realm, or for a user
|
help = """Report rough client activity globally, for a realm, or for a user
|
||||||
|
|
||||||
Usage examples:
|
Usage examples:
|
||||||
|
|
||||||
./manage.py client_activity
|
./manage.py client_activity --target server
|
||||||
./manage.py client_activity zulip
|
./manage.py client_activity --target realm --realm zulip
|
||||||
./manage.py client_activity hamlet@zulip.com"""
|
./manage.py client_activity --target user --user hamlet@zulip.com --realm zulip"""
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
# type: (ArgumentParser) -> None
|
# type: (ArgumentParser) -> None
|
||||||
parser.add_argument('arg', metavar='<arg>', type=str, nargs='?', default=None,
|
parser.add_argument('--target', dest='target', required=True, type=str,
|
||||||
help="realm or user to estimate client activity for")
|
help="'server' will calculate client activity of the entire server. "
|
||||||
|
"'realm' will calculate client activity of realm. "
|
||||||
|
"'user' will calculate client activity of the user.")
|
||||||
|
parser.add_argument('--user', dest='user', type=str,
|
||||||
|
help="The email adress of the user you want to calculate activity.")
|
||||||
|
self.add_realm_args(parser)
|
||||||
|
|
||||||
def compute_activity(self, user_activity_objects):
|
def compute_activity(self, user_activity_objects):
|
||||||
# type: (QuerySet) -> None
|
# type: (QuerySet) -> None
|
||||||
@@ -60,22 +64,17 @@ Usage examples:
|
|||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
# type: (*Any, **str) -> None
|
# type: (*Any, **str) -> None
|
||||||
if options['arg'] is None:
|
realm = self.get_realm(options)
|
||||||
|
if options["user"] is None:
|
||||||
|
if options["target"] == "server" and realm is None:
|
||||||
# Report global activity.
|
# Report global activity.
|
||||||
self.compute_activity(UserActivity.objects.all())
|
self.compute_activity(UserActivity.objects.all())
|
||||||
|
elif options["target"] == "realm" and realm is not None:
|
||||||
|
self.compute_activity(UserActivity.objects.filter(user_profile__realm=realm))
|
||||||
else:
|
else:
|
||||||
arg = options['arg']
|
self.print_help("./manage.py", "client_activity")
|
||||||
try:
|
elif options["target"] == "user":
|
||||||
# Report activity for a user.
|
user_profile = self.get_user(options["user"], realm)
|
||||||
user_profile = get_user_profile_by_email(arg)
|
self.compute_activity(UserActivity.objects.filter(user_profile=user_profile))
|
||||||
self.compute_activity(UserActivity.objects.filter(
|
else:
|
||||||
user_profile=user_profile))
|
self.print_help("./manage.py", "client_activity")
|
||||||
except UserProfile.DoesNotExist:
|
|
||||||
try:
|
|
||||||
# Report activity for a realm.
|
|
||||||
realm = get_realm(arg)
|
|
||||||
self.compute_activity(UserActivity.objects.filter(
|
|
||||||
user_profile__realm=realm))
|
|
||||||
except Realm.DoesNotExist:
|
|
||||||
print("Unknown user or realm %s" % (arg,))
|
|
||||||
exit(1)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user