diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index 6a7199f..9f41c2d 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -25,7 +25,7 @@ from django.core.files.storage import default_storage from django.core.mail import send_mail from django.db import connection, models from django.db.models import Count, F, Func, OuterRef, Q, Subquery -from django.db.models.functions import Lower, ExtractDay +from django.db.models.functions import Lower from django.template.defaultfilters import date as _date from django.template.defaultfilters import slugify from django.template.loader import render_to_string @@ -42,8 +42,6 @@ from icalendar import Event as icalEvent from location_field.models.spatial import LocationField from django.dispatch import receiver from django.db.models.signals import post_save -from django.db.models.aggregates import StdDev -from django.db.models import Avg, Max, Min from .calendar import CalendarDay from .import_tasks.extractor import Extractor @@ -51,18 +49,8 @@ from .import_tasks.generic_extractors.fbevent import ( CExtractor as FacebookEventExtractor, ) -from django.db.models import Aggregate, FloatField - logger = logging.getLogger(__name__) - -class Median(Aggregate): - function = "PERCENTILE_CONT" - name = "median" - output_field = FloatField() - template = "%(function)s(0.5) WITHIN GROUP (ORDER BY %(expressions)s)" - - # # # Useful for translation @@ -2747,46 +2735,6 @@ class RecurrentImport(models.Model): else: return None - def _get_foresight_quality_internal(qs): - limit = datetime.now() + timedelta(days=-30) - - qs = qs.filter(start_day__gte=F("created_date")).annotate( - foresight=ExtractDay(F("start_day") - F("created_date")) - ) - - stats = qs.filter().aggregate( - minimum=Min("foresight"), - maximum=Max("foresight"), - mean=Avg("foresight"), - median=Median("foresight"), - stdev=StdDev("foresight"), - ) - - statsm = qs.filter(created_date__gte=limit).aggregate( - minimum=Min("foresight"), - maximum=Max("foresight"), - mean=Avg("foresight"), - median=Median("foresight"), - stdev=StdDev("foresight"), - ) - - return [ - [ - _(x), - round(stats[x], 2) if stats[x] is not None else "-", - round(statsm[x], 2) if statsm[x] is not None else "-", - ] - for x in stats - ] - - def get_global_foresight_quality(): - return RecurrentImport._get_foresight_quality_internal(Event.objects) - - def get_foresight_quality(self): - return RecurrentImport._get_foresight_quality_internal( - Event.objects.filter(import_sources__contains=[self.source]) - ) - class BatchImportation(models.Model): class STATUS(models.TextChoices): diff --git a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html index 6d6bfbb..7f40560 100644 --- a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html +++ b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html @@ -85,33 +85,9 @@ - {% with object.get_foresight_quality as stat %} - {% if stat|length > 0 %} -
- On s'intéresse à la différence entre la date de publication d'un événement et la date effective de l'événement. Plus le nombre de jours qui les sépare est élevé, plus - la source anticipe ses événements, et peut être considérée comme une source fiable. On ignore les événements ajoutés à l'agenda alors que l'événement a déjà eu lieu. - On affiche cette information pour les imports depuis le début de son - intégration à l'agenda, mais aussi pour le dernier mois. -
-- {% for v in stat %} | {{ v.0 }} | {% endfor %} - - -
---|---|
écart (en jours) | - {% for v in stat %}{{ v.1 }} | {% endfor %} -
écart du dernier mois (en jours) | - {% for v in stat %}{{ v.2 }} | {% endfor %} -