8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-24 20:33:11 +00:00
re2o/logs/charts.py

50 lines
1.5 KiB
Python

from jchart import Chart
from jchart.config import Axes
from users.models import User, Adherent
from re2o.utils import all_adherent
from datetime import timedelta
from django.utils import timezone
from django.db.models import Count
class ActiveUserChart(Chart):
"""Create the hart of all active users for the 3 last months"""
chart_type = 'line'
scales = {'xAxes': [Axes(type='time', position='bottom')]}
def get_datasets(self, **kwargs):
data=[]
for i in range(100):
d = timedelta(days=i)
date = timezone.now()-d
data.append({'x':date,'y':all_adherent(search_time=date).count()})
return [{
'type': 'line',
'label': "Nombre d'utilisateur actifs",
'data': data
}]
class MachinePerUserChart(Chart):
"""Create the chart displaying the number of machines per users
for the 20 firsts users"""
qs = User.objects.annotate(num=Count('machine')).order_by('-num')[:20]
chart_type = 'bar'
scales = {'xAxes': [Axes(type='category', position='bottom',)]}
def get_labels(self, **kwargs):
qs = User.objects.annotate(num=Count('machine')).order_by('-num')[:20]
return [u.name for u in qs]
def get_datasets(self, **kwargs):
qs = User.objects.annotate(num=Count('machine')).order_by('-num')[:20]
data=[u.num for u in qs]
return [{
'label': "Nombre de machines par utilisateurs",
'data': data
}]