mirror of
https://github.com/zulip/zulip.git
synced 2025-11-19 14:08:23 +00:00
activity: Clean up table computation a bit
(imported from commit c599d7ca572010c07b457ec15a305eef7dff78dd)
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{% for name, has_pointer, rows in data %}
|
{% for name, activity in data.iteritems %}
|
||||||
|
|
||||||
<h2>{{ name }} usage</h2>
|
<h2>{{ name }} usage</h2>
|
||||||
<table class="table sortable table-striped table-bordered">
|
<table class="table sortable table-striped table-bordered">
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<th>User</th>
|
<th>User</th>
|
||||||
<th>Last get_updates</th>
|
<th>Last get_updates</th>
|
||||||
<th>Last send_message</th>
|
<th>Last send_message</th>
|
||||||
{% if has_pointer %}
|
{% if activity.has_pointer %}
|
||||||
<th>Last update_pointer</th>
|
<th>Last update_pointer</th>
|
||||||
<th>Number of pointer updates</th>
|
<th>Number of pointer updates</th>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -21,12 +21,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for row in rows %}
|
{% for email, row in activity.rows.iteritems %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>{{ row.email }}</strong></td>
|
<td><strong>{{ email }}</strong></td>
|
||||||
<td sorttable_customkey="{{ row.get_updates_last|date:'YmdHi' }}">{{ row.get_updates_last }}</td>
|
<td sorttable_customkey="{{ row.get_updates_last|date:'YmdHi' }}">{{ row.get_updates_last }}</td>
|
||||||
<td sorttable_customkey="{{ row.send_message_last|date:'YmdHi' }}">{{ row.send_message_last }}</td>
|
<td sorttable_customkey="{{ row.send_message_last|date:'YmdHi' }}">{{ row.send_message_last }}</td>
|
||||||
{% if has_pointer %}
|
{% if activity.has_pointer %}
|
||||||
<td sorttable_customkey="{{ row.update_pointer_last|date:'YmdHi' }}">{{ row.update_pointer_last }}</td>
|
<td sorttable_customkey="{{ row.update_pointer_last|date:'YmdHi' }}">{{ row.update_pointer_last }}</td>
|
||||||
<td>{{ row.update_pointer_count }}</td>
|
<td>{{ row.update_pointer_count }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -968,40 +968,43 @@ def json_fetch_api_key(request, user_profile, password=POST):
|
|||||||
return json_error("Your username or password is incorrect.")
|
return json_error("Your username or password is incorrect.")
|
||||||
return json_success({"api_key": user_profile.api_key})
|
return json_success({"api_key": user_profile.api_key})
|
||||||
|
|
||||||
|
class ActivityTable(object):
|
||||||
|
def __init__(self, client_name, queries):
|
||||||
|
self.has_pointer = False
|
||||||
|
self.rows = {}
|
||||||
|
for url, query_name in queries:
|
||||||
|
if 'pointer' in query_name:
|
||||||
|
self.has_pointer = True
|
||||||
|
for record in UserActivity.objects.filter(
|
||||||
|
query=url,
|
||||||
|
client__name=client_name):
|
||||||
|
row = self.rows.setdefault(record.user_profile.user.email, {})
|
||||||
|
row[query_name + '_count'] = record.count
|
||||||
|
row[query_name + '_last' ] = record.last_visit
|
||||||
|
|
||||||
@login_required(login_url = settings.HOME_NOT_LOGGED_IN)
|
@login_required(login_url = settings.HOME_NOT_LOGGED_IN)
|
||||||
def get_activity(request):
|
def get_activity(request):
|
||||||
user_profile = request.user.userprofile
|
user_profile = request.user.userprofile
|
||||||
if user_profile.realm.domain != "humbughq.com":
|
if user_profile.realm.domain != "humbughq.com":
|
||||||
return HttpResponseRedirect(reverse('zephyr.views.login_page'))
|
return HttpResponseRedirect(reverse('zephyr.views.login_page'))
|
||||||
|
|
||||||
def add_activity(activity, url, query_name, client_name):
|
web_queries = (
|
||||||
for row in UserActivity.objects.filter(query=url,
|
("/json/get_updates", "get_updates"),
|
||||||
client__name=client_name):
|
("/json/send_message", "send_message"),
|
||||||
email = row.user_profile.user.email
|
("/json/update_pointer", "update_pointer"),
|
||||||
activity.setdefault(email, {})
|
)
|
||||||
activity[email]['email'] = email
|
|
||||||
activity[email][query_name + '_count'] = row.count
|
|
||||||
activity[email][query_name + '_last'] = row.last_visit
|
|
||||||
|
|
||||||
website_activity = {}
|
api_queries = (
|
||||||
add_activity(website_activity, "/json/get_updates", "get_updates", "website")
|
("/api/v1/get_messages", "get_updates"),
|
||||||
add_activity(website_activity, "/json/send_message", "send_message", "website")
|
("/api/v1/send_message", "send_message"),
|
||||||
add_activity(website_activity, "/json/update_pointer", "update_pointer", "website")
|
)
|
||||||
|
|
||||||
mirror_activity = {}
|
|
||||||
add_activity(mirror_activity, "/api/v1/get_messages", "get_updates", "zephyr_mirror")
|
|
||||||
add_activity(mirror_activity, "/api/v1/send_message", "send_message", "zephyr_mirror")
|
|
||||||
|
|
||||||
api_activity = {}
|
|
||||||
add_activity(api_activity, "/api/v1/get_messages", "get_updates", "API")
|
|
||||||
add_activity(api_activity, "/api/v1/send_message", "send_message", "API")
|
|
||||||
|
|
||||||
return render_to_response('zephyr/activity.html',
|
return render_to_response('zephyr/activity.html',
|
||||||
{ 'data': [
|
{ 'data': {
|
||||||
('Website', True, website_activity.values()),
|
'Website': ActivityTable('website', web_queries),
|
||||||
('Mirror', False, mirror_activity.values()),
|
'Mirror': ActivityTable('zephyr_mirror', api_queries),
|
||||||
('API', False, api_activity.values())
|
'API': ActivityTable('API', api_queries)
|
||||||
]}, context_instance=RequestContext(request))
|
}}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
@authenticated_api_view
|
@authenticated_api_view
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
|
|||||||
Reference in New Issue
Block a user