[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