TheCubicWebBook #636933 include those tips written by mail [resolved]

qqs petites choses :

  • quand on se retrouve à avoir un 'if' sur un type d'entité, c'est louche. Là tu dois par ex. plutot vouloir que tes 2 entités implémentent l'interface ITree et récuperer le résultat de .children() qqsoit le type d'entité.
  • ce n'est généralement pas une bonne idée de surcharger cell_call de la vue primaire par défaut car on perd tout le comportement codé dans celle-ci, notamment la gestion des boites 'in-context'. Regarde l'implémentation et essaie de surcharger des méthodes plus spécifiques.
  • self.req.execute('Any T WHERE T in_conf C, C eid "%s"' % entity.eid) s'écrit plutot self.req.execute('Any T WHERE T in_conf C, C eid %(x)s', {'x': entity.eid}, 'x') pour bénéficier du cache d'arbre de syntaxe rql (eg il faut toujours éviter d'insérer des valeurs dans du rql). Aussi, comme on récupère assez souvent les entités liés à une autre, y a des méthodes sympa pour ça. Dans ton cas ça s'écrit par ex: entity.related('in_conf', 'object') là encore tu bénéficies d'un cache de haut niveau, en plus de la génération de requête intelligente qui te récupères directement un certain nombre d'attributs et relations unaire automatiquement.
prioritynormal
typebug
done in201001
load0.200
load left0.000
closed by<not specified>