added new graph : Rencontre par lieu to 'statistiques' module
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import GroupeLieux
|
||||
# Register your models here.
|
||||
|
||||
@admin.register(GroupeLieux)
|
||||
class GroupLieuxAdmin(admin.ModelAdmin):
|
||||
model = GroupeLieux
|
||||
filter_horizontal = ["lieux"]
|
||||
@@ -9,6 +9,7 @@ from graphos.sources.simple import SimpleDataSource
|
||||
from graphos.renderers import gchart
|
||||
|
||||
from notes.models import Sujet
|
||||
from .models import GroupeLieux
|
||||
|
||||
NOM_MOIS = {
|
||||
1: "Janvier",
|
||||
@@ -274,3 +275,24 @@ class RencontreParHeureChart(gchart.AreaChart):
|
||||
data[intervalle] += 1
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class RencontreParLieuChart(PieWrapper):
|
||||
|
||||
@property
|
||||
def labels(self):
|
||||
for groupe_lieux in GroupeLieux.objects.all():
|
||||
yield (groupe_lieux.label,
|
||||
tuple(groupe_lieux.lieux.values_list('pk', flat=True))
|
||||
)
|
||||
|
||||
def get_count_for_group(self, lieu_pks):
|
||||
return self.queryset.filter(rencontre__lieu__pk__in=lieu_pks).count()
|
||||
|
||||
def __init__(self, queryset):
|
||||
self.queryset = queryset
|
||||
data = [('Lieu de rencontre', 'Nombre de rencontres')]
|
||||
if self.queryset:
|
||||
data += [(label, self.get_count_for_group(lieu_pks)) for label, lieu_pks in self.labels]
|
||||
super().__init__(data=data,
|
||||
title="Fréquentation par lieu")
|
||||
@@ -90,3 +90,17 @@ class FicheStatistique(models.Model):
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Fiche statistique"
|
||||
|
||||
|
||||
|
||||
class GroupeLieux(models.Model):
|
||||
label = models.CharField(max_length=128, primary_key=True)
|
||||
lieux = models.ManyToManyField("maraudes.Lieu")
|
||||
|
||||
def __str__(self):
|
||||
return "<Groupe: %s (n=%i)>" % (self.label, self.lieux.count())
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Groupe de lieux"
|
||||
verbose_name_plural = "Groupes de lieux"
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@ class FrequentationChartsView(MultipleChartsView):
|
||||
('Par mois', charts.RencontreParMoisChart),
|
||||
('Par heure', charts.RencontreParHeureChart),
|
||||
('Par sujet', charts.RencontreParSujetChart),
|
||||
('Par lieu', charts.RencontreParLieuChart)
|
||||
])
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
Reference in New Issue
Block a user