Projet

Général

Profil

Development #64853

statistiques : les références aux services ne sont plus toujours des références au modèle Service

Ajouté par Benjamin Dauvergne il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
04 mai 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Cf. #64850

Dans la ligne suivante :

                content_type_id, instance_pk = n_2_pairing_rev(reference_id)                                           
                if content_type_id == service_ct_id:                                                                   
                    reference_label = reference_labels.get(instance_pk) 

content_type_id peut parfois être l'id du modèle ContentType pour OIDCClient ou LibertyProvider, qui sont bien des sous-classes de Service mais le code n'est pas capable de le comprendre.

Le plus simple serait de passer directement par data__service_name pour faire effectuer le travail d'aggrégation par postgres.


Fichiers

Révisions associées

Révision c1b80a64 (diff)
Ajouté par Benjamin Dauvergne il y a presque 2 ans

api: fix aggregation by service in statistics (#64853)

Reference to service can be any kind of model deriving from Service, and
grouping by the array column reference_ids cannot work as the column
could contain other references than to the service.

Historique

#2

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Assigné à mis à Benjamin Dauvergne
#3

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

#4

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Plusieurs changements :
  • l'agrégation pour les service se fait sur 'data__service_name' plutôt que sur 'reference_ids' avec ensuite un traitement en python
  • les valeurs pour l'axe Y sont désormais triés (par Statistics.to_json)
  • toutes les valeurs possibles pour l'axe Y sont représentées (via Statistics.set_y_labels()) même si la requête SQL ne retourne rien (on voit quand un service est à zéro)
  • la valeur absente (None) est gérée directement par Statistics.to_json() et est mise toujours en première
#5

Mis à jour par Emmanuel Cazenave il y a presque 2 ans

Je ne comprends pas la forme suivante, plutôt le slice à droite ?

self.y_labels[:] = y_labels
#6

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Emmanuel Cazenave a écrit :

Je ne comprends pas la forme suivante, plutôt le slice à droite ?

[...]

C'est à peu près pareil, ça crée une copie plutôt que de garder la référence, mais ça n'impose pas que l'argument de droite soit une liste.

>>> x = []
>>> id(x)
139750454997128
>>> y = [1, 2, 3]
>>> id(y)
139750455486920
>>> x[:] = y
>>> id(x)
139750454997128
>>> x = y[:]
>>> id(x)
139750454048200
>>> x = y
>>> id(x)
139750455486920
#7

Mis à jour par Emmanuel Cazenave il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée
#8

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit c1b80a6408631ed3d90cdef52eade14adb38d765
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Wed May 4 17:37:43 2022 +0200

    api: fix aggregation by service in statistics (#64853)

    Reference to service can be any kind of model deriving from Service, and
    grouping by the array column reference_ids cannot work as the column
    could contain other references than to the service.
#9

Mis à jour par Transition automatique il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#10

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF