Aditya Bansal
d9c9bfe7f6
logger: Add new create_logger abstraction to simplify logging.
...
This deduplicates a ton of Python logger-creation code to use a single
standard implementation, so we can avoid copy-paste problems.
2017-08-27 18:31:53 -07:00
Umair Khan
6d4ba50ceb
result.json: Upgrade test_views.
2017-08-17 09:03:35 -07:00
Greg Price
61666a9262
zulip_ops: Delete the long-disused `stats1.zulip.net` config and its dependencies.
...
This consists of the `zulip_ops::stats` Puppet class, which has apparently
not been used since 2014, and a number of files that I believe were
only used for that. Also a couple of tiny loose ends in other files.
2017-08-15 17:30:31 -07:00
Tim Abbott
e3e2d9093c
analytics: Remove references to UserProfile.objects.get.
2017-08-15 12:48:33 -07:00
neiljp (Neil Pilgrim)
b782db48e1
mypy: Remove superfluous older 'type: ignore' annotations.
2017-08-08 11:27:51 -07:00
Greg Price
c127630dcf
Delete some obsolete usage-stats tools.
...
These are no longer useful, with our spiffy new analytics framework,
and we haven't in fact been using them for some time, while the
`active-user-stats` cron job does cause regular mail from cron.
Just delete them.
2017-07-31 17:06:15 -07:00
Vishnu Ks
a99c60ce07
analytics: Add translation tags to stats.html.
2017-07-16 16:16:43 -07:00
Vishnu Ks
b0e4cfd480
analytics: Replace get_user_profile_by email in client_activity.
2017-07-14 13:35:43 -07:00
Vishnu Ks
e5c5960faa
analytics: Remove unused get_user_profile_by_email import.
2017-07-14 13:35:43 -07:00
Vishnu Ks
0a67e00702
analytics: Use example_user in test_views.py.
2017-07-14 13:35:43 -07:00
Tim Abbott
0b60f11cf8
analytics: Display Zulip Electron app as the main desktop app.
...
This should make the /stats data significantly clearer.
2017-07-07 18:31:47 -07:00
Tim Abbott
31caab4229
analytics: Rename 'new iOS app' to 'Mobile app'.
2017-07-07 18:31:13 -07:00
Umair Khan
c74f125b7c
analytics: Add on_delete in foreign keys.
...
on_delete will be a required arg for ForeignKey in Django 2.0. Set it
to models.CASCADE on models and in existing migrations if you want to
maintain the current default behavior.
See https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.on_delete
2017-06-13 15:13:49 -07:00
Aditya Bansal
42b0680ab2
pep8: Add compliance with rule E261 populate_analytics_db.py.
2017-05-31 17:07:15 -07:00
Aditya Bansal
30dfb54c65
pep8: Add compliance with rule E261 to analytics/views.py.
2017-05-31 17:07:15 -07:00
Aditya Bansal
061cb9ae44
pep8: Add compliance with rule E261 to analytics/tests/test_views.py.
2017-05-31 17:07:15 -07:00
umkay
d9b23b39d3
mypy: Fix strict-optional in analytics.
2017-05-26 15:39:39 -07:00
Christian Hudon
c80e6edb4e
mypy: Declare models with null=True Optional.
2017-05-23 14:36:40 -07:00
Rishi Gupta
ee16abaf3b
analytics: Fix sort function in views.sort_client_labels.
...
sort_client_labels sorts first by total, and then to ensure deterministic
outcomes, sorts (reverse) alphabetically by label.
Fixes regression introduced in 0c0e539
.
2017-05-09 11:32:35 -07:00
Aditya Bansal
3f0b22ce31
pep8: Add compliance with rule E261 to test_counts.py.
2017-05-07 23:21:50 -07:00
Aditya Bansal
2ca1f60ac5
pep8: Add compliance with rule E261 to analytics/models.py.
2017-05-07 23:21:50 -07:00
Aditya Bansal
13d9b98c39
pep8: Add compliance with rule E261 to analyze_mit.py.
2017-05-07 23:21:50 -07:00
Aditya Bansal
9e11185fe2
pep8: Add compliance with rule E261 to active_user_stats.py.
2017-05-07 23:21:50 -07:00
Aditya Bansal
27b87943af
pep8: Add compliance with rule E261 to counts.py.
2017-05-07 23:21:50 -07:00
Rishi Gupta
92978d6fb2
analytics: Fix --utc argument in update_analytics_counts.py.
2017-04-28 16:15:07 -07:00
Rishi Gupta
73ae2abd4e
analytics: Add --verbose option to update_analytics_counts.py.
2017-04-28 16:15:07 -07:00
Rishi Gupta
61bf445da4
analytics: Restrict fill_to_time to hour boundaries in process_count_stat.
2017-04-28 16:15:07 -07:00
Rishi Gupta
dfbeab73b5
analytics: Change update_analytics_counts to only use hour boundaries.
...
Fixes a recent regression where analytics were not being run on hour
boundaries.
Includes a migration that dumps all the analytics data.
2017-04-28 16:15:07 -07:00
Rishi Gupta
f595f4f7f2
analytics: Change Number of Users chart to use realm_active_humans::day.
...
Previously we showed the total number of users with an active account. This
changes it to show only the number of users that have logged in in the past
two weeks.
2017-04-25 18:35:13 -07:00
Maxim Averin
73a1dd63d5
analytics: Refactor legacy 'zulip_internal' decorator.
...
Rename 'zulip_internal' decorator to 'require_server_admin', add
documentation for 'server_admin', explaining how to give permission
for ./activity page.
Fixes : #1463 .
2017-04-22 11:42:02 -07:00
Rishi Gupta
5e49da9285
analytics: Only update daily stats on day boundaries.
...
Previously we would update FillState for daily stats on hourly boundaries as
well. This would create two extra queries on the FillState table every hour
(for each CountStat), which adds roughly 50ms of extra processing for each
CountStat each day, as well as two extra lines each hour in the analytics
log. This can be a minor annoyance when backfilling stats.
2017-04-18 11:02:51 -07:00
Rishi Gupta
c5f1398052
analytics: Add section comments in counts.count_stats_.
...
Also reorders the stats a bit.
2017-04-18 11:02:51 -07:00
Rishi Gupta
b335ad2794
models: Add MIN_INTERVAL_LENGTH to UserActivityInterval.
...
Was previously a floating magic number appearing in both
zerver/lib/actions.py and analytics/lib/counts.py.
2017-04-18 11:02:51 -07:00
hackerkid
5c8f011d66
Remove unused timezone import.
2017-04-16 12:28:56 -07:00
hackerkid
b2504084ab
Replace timezone.now with timezone_now.
2017-04-16 12:28:56 -07:00
hackerkid
55c3d12078
Replace timezone.utc with timezone_utc.
2017-04-16 12:28:56 -07:00
Rishi Gupta
49bd330304
analytics: Add class DependentCountStat and stat realm_active_humans::day.
2017-04-14 11:41:07 -07:00
Rishi Gupta
62de1cf898
test_counts: Modernize TestProcessCountStat tests.
2017-04-14 11:41:07 -07:00
Rishi Gupta
1e8d2b984d
counts.py: Rename DataCollector-level operations to be more generic.
...
We're about to use these for DependentCountStats that will run SQL queries
on the analytics tables instead of the zerver tables.
2017-04-14 11:41:07 -07:00
Rishi Gupta
47cf1d15ba
counts.py: Move performance logging call out of pull_functions.
...
Makes it less likely someone will write a pull function in the future and
forget.
2017-04-14 11:41:07 -07:00
Rishi Gupta
6dff22cbaf
counts.py: Change check for LoggingCountStat to use isinstance.
...
I think this is more pythonic?
We could also get rid of LoggingCountStats altogether, since it's now just a
special case of CountStat (is_logging == data_collector.pull_function is None).
But I think it's nice to keep the distinction since they behave so differently.
2017-04-14 11:41:07 -07:00
Rishi Gupta
b45185562a
counts.py: Fix out of date comments.
2017-04-14 11:41:07 -07:00
Rishi Gupta
ac2cc9e2da
counts.py: Reorganize file into logical sections.
...
No changes to code or behavior.
2017-04-14 11:41:07 -07:00
Rishi Gupta
50868b98a9
counts.py: Change pull_function to take a property instead of a full stat.
...
Removes the circular dependency of CountStat containing a DataCollector, and
DataCollector containing a function that takes a CountStat as an argument.
2017-04-14 11:41:07 -07:00
Rishi Gupta
eadfc743c8
counts.py: Remove CustomPullCountStat.
2017-04-14 11:41:07 -07:00
Rishi Gupta
118b44d4f0
counts.py: Change DataCollector to take a pull_function argument.
...
This will allow us to appropriately generalize CountStat to include
LoggingCountStat and CustomPullCountStat. It'll also make life easier when
we introduce DependentCountStat.
2017-04-14 11:41:07 -07:00
Rishi Gupta
f9e56ad25d
counts.py: Move DataCollector declarations into CountStat declarations.
...
The previous zerver_* names were unwieldy and not very readable. This also
puts more of the useful information in one place; in particular, makes it
easier to skim a CountStat declaration and see if we're collecting it at a
user/stream granularity or a realm granularity.
2017-04-14 11:41:07 -07:00
Rishi Gupta
c20e79ab1f
counts.py: Rename DataCollector.analytics_table to output_table.
2017-04-14 11:41:07 -07:00
Rishi Gupta
6369d23633
counts.py: Rename ZerverCountQuery to DataCollector.
...
Not the final form of DataCollector, but the name change causes a big diff
so separating it out.
2017-04-14 11:41:07 -07:00
Rishi Gupta
b3991e2557
counts.py: Move CountStat.group_by into ZerverCountQuery.
...
Part of a larger refactoring to reduce cyclic dependencies between CountStat
and DataCollector (coming soon).
2017-04-14 11:41:07 -07:00