Olivier Grisel wrote:
Jean-Marc Orliaguet a écrit :
Il est possible d'attacher des événements à l'invalidation du cache.
Le contexte de l'événement peut aussi être pris en compte pour
limiter la couverture, cf event_in_folders (sur des répertoires
donnés), event_on_types (pour des types d'objets donnés) .. mais pas
pour un utilisateur donné.
donc si vous associez un évenement "event_ids:role_changed" au
parametres du cache portlet (c'est un exemple encore faut-il qu'il y
ait un évenement 'role_changed' qui soit émis) l'invalidation aura
lieu indépendemment de l'utilisateur pour qui le rôle a changé. Mais
dans votre cas cela devrait suffir?
Corrige moi si je me trompe JM, mais l'invalidation ne se fera que sur
le client ZEO sur lequel l'evennement a été émis, non ? Les caches
des autres ZEO ne seront pas informé de la modification des roles, si ?
si si, ca marche, l'information est écrite dans la ZODB donc elle se
propage entre les instance ZEO.
cf. in PortletsTool.py
def notify_event(self, event_type, object, infos):
....
# expire the portlets interested in the event
# ZEO-aware invalidation.
for portlet in self.listPortletsInterestedInEvent(
event_id=event_type, folder_path=object_path,
portal_type=portal_type):
portlet.expireCache()
et expireCache():
security.declareProtected(ManagePortlets, 'expireCache')
def expireCache(self):
"""Expires the cache for this Portlet.
In a ZEO environment, the information will propagate
between all ZEO instances as long as the portlet has not been
removed.
"""
self.cache_cleanup_date = time.time()
/JM
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>