TheCubicWebBook #342709 snippet of docs to integrate [open]

see cards in the old cubicweb's intranet page. Also here are some stuff from my mailbox:

> Je n'ai pas très bien compris l'utilisation de unsafe_execute. Pour
> l'instant je la mets lorsque je me rends compte qu'il y a des problèmes
> de droit, ce qui n'est bien évidemment pas la bonne façon de faire.
>
> J'ai l'impression que unsafe_execute est utilisé exclusivement dans les
> hooks. Est-ce exact ? Dans quels cas devons-nous utiliser unsafe_execute
> plutôt que execute ? Est-ce quand on est dans un hook qui ajoute ou
> modifie une entité qui peut-être créée ou modifiée par une personne
> autre que l'admin ?

unsafe_execute permet d'éxécuter une requête rql sans passer par les
vérifications de sécurité. On ne peut faire ça que du coté repository, pas du
coté web (donc dans les hooks mais en général pas dans les vues).

Il faut évidemment l'utiliser uniquement quand nécessaire, à savoir en général
quand on veut profiter d'un hook pour faire qqch que l'utilisateur n'a pas
(ou pourrait ne pas avoir) le droit de faire autrement. Par ex. dans jpl on a
des relations définissant qui à le droit de voir/faire quoi qu'il faut copier
d'une entité à l'autre. Un utilisateur standard n'a pas le droit de gérer
tout seul ces relations mais on veut qu'elles se propagent automatiquement
sur les entités qu'il crée. On utilise donc dans ce cas unsafe_execute plutot
que execute qui lui se ramasserait un Unauthorized.

and about ECache entity:

> question pour ma petite tête qui n'a toujoursr pas bien compris le
> fonctionnement des ecaches, sans doute car je ne les ai jamais utilisé...
> C'est quoi l'intérêt d'avoir ça sous forme d'entité persistente ?

Connais-tu des déploiements de cubicweb où il y a une seule base pour
plusieurs instances ?

Certaines écritures dans la base invalident le cache grâce à un appel
exécuté dans un hook. La classe cache utilisée dans l'instance ne
renvoie des données mises en cache que si elles ont été insérées après
la dernière invalidation. Toutes les instances voient la même date
d'invalidation.
prioritynormal
typeenhancement
done in<not specified>
load0.200
load left0.200
closed by<not specified>