[Zope-Checkins] SVN: Zope/trunk/ - RAMCacheManager: Allow invalidation of a cache entry from the

Jens Vagelpohl jens at dataflake.org
Mon Nov 8 04:55:05 EST 2004


Log message for revision 28391:
  - RAMCacheManager: Allow invalidation of a cache entry from the
    Statistics view in the ZMI
  

Changed:
  U   Zope/trunk/doc/CHANGES.txt
  U   Zope/trunk/lib/python/Products/StandardCacheManagers/RAMCacheManager.py
  U   Zope/trunk/lib/python/Products/StandardCacheManagers/dtml/statsRCM.dtml

-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt	2004-11-08 06:52:17 UTC (rev 28390)
+++ Zope/trunk/doc/CHANGES.txt	2004-11-08 09:55:05 UTC (rev 28391)
@@ -32,6 +32,9 @@
         the whole request in memory or just a chunk inside
         webdav.NullResource.PUT().
 
+      - RAMCacheManager: Allow invalidation of a cache entry from the
+        Statistics view in the ZMI
+
     Bugs fixed
 
       - ZPublisher: changed some hardcoded 'latin1' arguments to 'iso-8859-15'

Modified: Zope/trunk/lib/python/Products/StandardCacheManagers/RAMCacheManager.py
===================================================================
--- Zope/trunk/lib/python/Products/StandardCacheManagers/RAMCacheManager.py	2004-11-08 06:52:17 UTC (rev 28390)
+++ Zope/trunk/lib/python/Products/StandardCacheManagers/RAMCacheManager.py	2004-11-08 09:55:05 UTC (rev 28391)
@@ -346,7 +346,7 @@
                                      'manage_stats',
                                      'getCacheReport',
                                      'sort_link',)),
-        ('Change cache managers', ('manage_editProps',), ('Manager',)),
+        ('Change cache managers', ('manage_editProps','manage_invalidate'), ('Manager',)),
         )
 
     manage_options = (
@@ -451,6 +451,20 @@
         url = url + '&sort_reverse=' + (newsr and '1' or '0')
         return '<a href="%s">%s</a>' % (escape(url, 1), escape(name))
 
+    def manage_invalidate(self, paths, REQUEST=None):
+        """ ZMI helper to invalidate an entry """
+        for path in paths:
+            try:
+                ob = self.unrestrictedTraverse(path)
+            except (AttributeError, KeyError):
+                pass
+
+            ob.ZCacheable_invalidate()
+
+        if REQUEST is not None:
+            msg = 'Cache entries invalidated'
+            return self.manage_stats(manage_tabs_message=msg)
+
 Globals.default__class_init__(RAMCacheManager)
 
 

Modified: Zope/trunk/lib/python/Products/StandardCacheManagers/dtml/statsRCM.dtml
===================================================================
--- Zope/trunk/lib/python/Products/StandardCacheManagers/dtml/statsRCM.dtml	2004-11-08 06:52:17 UTC (rev 28390)
+++ Zope/trunk/lib/python/Products/StandardCacheManagers/dtml/statsRCM.dtml	2004-11-08 09:55:05 UTC (rev 28391)
@@ -2,95 +2,114 @@
 <dtml-var manage_tabs>
 
 <p class="form-help">
-Memory usage is approximate. It is based on the pickled value of the 
-cached data. The cache is cleaned up by removing the least frequently 
-accessed entries since the last cleanup operation. The determination 
-is made using the <em>recent hits</em> counter.
+  Memory usage is approximate. It is based on the pickled value of the 
+  cached data. The cache is cleaned up by removing the least frequently 
+  accessed entries since the last cleanup operation. The determination 
+  is made using the <em>recent hits</em> counter.
 </p>
 
 <dtml-if getCacheReport>
-<table width="100%" cellspacing="0" cellpadding="2" border="0">
-<tr class="list-header">
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Path', 'path')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Hits', 'hits')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Recent Hits', 'counter')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Misses', 'misses')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Memory', 'size')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Views', 'views')">
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-nav">
-  <dtml-var expr="sort_link('Entries', 'entries')">
-  </div>
-  </td>
-</tr>
-<dtml-in getCacheReport mapping>
-<dtml-if sequence-odd>
-<tr class="row-normal">
-<dtml-else>
-<tr class="row-hilite">
-</dtml-if>
-  <td align="left" valign="top">
-  <div class="list-item">
-  <a href="&dtml-path;/ZCacheable_manage">&dtml-path;</a>
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  &dtml-hits;
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  &dtml-counter;
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  &dtml-misses;
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  &dtml-size;
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  <dtml-var expr="_.string.join(views, ', ')" html_quote>
-  </div>
-  </td>
-  <td align="left" valign="top">
-  <div class="list-item">
-  &dtml-entries;
-  </div>
-  </td>
-</dtml-in>
-</table>
 
+  <form method="post" action="manage_invalidate">
+
+    <table width="100%" cellspacing="0" cellpadding="2" border="0">
+    <tr class="list-header">
+      <td align="left" valign="top" class="list-nav" width="16">
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Path', 'path')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Hits', 'hits')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Recent Hits', 'counter')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Misses', 'misses')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Memory', 'size')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Views', 'views')">
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-nav">
+      <dtml-var expr="sort_link('Entries', 'entries')">
+      </div>
+      </td>
+    </tr>
+    <dtml-in getCacheReport mapping>
+    <dtml-if sequence-odd>
+    <tr class="row-normal">
+    <dtml-else>
+    <tr class="row-hilite">
+    </dtml-if>
+      <td align="left" valign="top" width="16">
+        <input type="checkbox" name="paths:list" value="&dtml-path;" />
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      <a href="&dtml-path;/ZCacheable_manage">&dtml-path;</a>
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      &dtml-hits;
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      &dtml-counter;
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      &dtml-misses;
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      &dtml-size;
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      <dtml-var expr="_.string.join(views, ', ')" html_quote>
+      </div>
+      </td>
+      <td align="left" valign="top">
+      <div class="list-item">
+      &dtml-entries;
+      </div>
+      </td>
+      </tr>
+    </dtml-in>
+    
+      <tr>
+        <td width="16"> </td>
+        <td colspan="7">
+          <input type="submit" value=" Remove " />
+        </td>
+      </tr>
+    
+    </table>
+
+  </form>
+
 <dtml-else>
 <p class="form-text">
 <strong>Nothing is in the cache.</strong>



More information about the Zope-Checkins mailing list