2021-03-26 13:28:03 -05:00
|
|
|
import datetime
|
|
|
|
|
|
|
|
from django.contrib.auth.models import User
|
2021-04-27 07:56:02 -05:00
|
|
|
from django.shortcuts import render
|
2021-03-26 13:28:03 -05:00
|
|
|
from django.views import View
|
|
|
|
|
|
|
|
from apps.profile.models import Profile, RNewUserQueue
|
2022-07-28 22:47:00 -04:00
|
|
|
from apps.statistics.models import MStatistics
|
2021-03-26 13:28:03 -05:00
|
|
|
|
|
|
|
class Users(View):
|
|
|
|
|
|
|
|
def get(self, request):
|
2022-05-11 15:23:47 -04:00
|
|
|
last_year = datetime.datetime.utcnow() - datetime.timedelta(days=365)
|
2021-03-26 13:28:03 -05:00
|
|
|
last_month = datetime.datetime.utcnow() - datetime.timedelta(days=30)
|
|
|
|
last_day = datetime.datetime.utcnow() - datetime.timedelta(minutes=60*24)
|
2022-07-28 22:47:00 -04:00
|
|
|
expiration_sec = 60*60 # 1 hour
|
|
|
|
|
2021-04-27 07:56:02 -05:00
|
|
|
data = {
|
2022-07-28 22:47:00 -04:00
|
|
|
'all': MStatistics.get('munin:users_yearly',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: User.objects.count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'yearly': MStatistics.get('munin:users_yearly',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(last_seen_on__gte=last_year).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'monthly': MStatistics.get('munin:users_monthly',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(last_seen_on__gte=last_month).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'daily': MStatistics.get('munin:users_daily',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(last_seen_on__gte=last_day).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'premium': MStatistics.get('munin:users_premium',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(is_premium=True).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'archive': MStatistics.get('munin:users_archive',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(is_archive=True).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'pro': MStatistics.get('munin:users_pro',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: Profile.objects.filter(is_pro=True).count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
|
|
|
'queued': MStatistics.get('munin:users_queued',
|
2022-07-28 23:08:49 -04:00
|
|
|
lambda: RNewUserQueue.user_count(),
|
2022-07-28 22:47:00 -04:00
|
|
|
set_default=True, expiration_sec=expiration_sec),
|
2021-04-27 07:56:02 -05:00
|
|
|
}
|
2021-04-30 13:48:48 -05:00
|
|
|
chart_name = "users"
|
2021-05-03 07:56:47 -05:00
|
|
|
chart_type = "counter"
|
2021-04-30 13:48:48 -05:00
|
|
|
|
2021-05-03 09:27:28 -05:00
|
|
|
formatted_data = {}
|
|
|
|
for k, v in data.items():
|
|
|
|
formatted_data[k] = f'{chart_name}{{category="{k}"}} {v}'
|
2021-04-30 13:48:48 -05:00
|
|
|
context = {
|
2021-05-03 09:27:28 -05:00
|
|
|
"data": formatted_data,
|
2021-04-30 13:48:48 -05:00
|
|
|
"chart_name": chart_name,
|
|
|
|
"chart_type": chart_type,
|
|
|
|
}
|
2021-05-03 07:56:47 -05:00
|
|
|
return render(request, 'monitor/prometheus_data.html', context, content_type="text/plain")
|
2021-04-27 07:56:02 -05:00
|
|
|
|