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>

Répondre à