Jens Vagelpohl wrote at 2006-9-13 09:15 +0200: > ... >It is a long-standing bug that the CMFDefault File index_html (and >download, which is obsolete in newer CMF versions) simply defers to >index_html from OFS.File. That one doesn't know anything about Cache >Policy Managers, it only deals with the Zope ZCacheable cache manager >mechanism.
I have defined CMF-aware ZODB object types. The one for "File" looks like this: # DM 2005-11-02: added """ CMF 'File' variant (CMF Cache Policy Manager aware)""" from OFS.Image import File, manage_addFileForm, cookId from utils import _setCacheHeaders, _ViewEmulator class CMFFile(File): '''CMF cache policy manager aware file.''' meta_type = 'CPM aware File' def index_html(self, REQUEST, RESPONSE): ' ' r = File.index_html(self, REQUEST, RESPONSE) if self.ZCacheable_getManager() is None: # not none cache manager already taken care of _setCacheHeaders(self._getCPMCachingWrapper(), extra_context={}) return r # DM 2006-05-17: more modular CPM caching def _getCPMCachingWrapper(self): return _ViewEmulator().__of__(self) # essentially a copy of "OFS.Image.manage_addFile" -- we should probably # use "ReuseUtils". def manage_addFile(self,id,file='',title='',precondition='', content_type='', REQUEST=None): """Add a new File object. Creates a new File object 'id' with the contents of 'file'""" id=str(id) title=str(title) content_type=str(content_type) precondition=str(precondition) id, title = cookId(id, title, file) self=self.this() # First, we create the file without data: self._setObject(id, CMFFile(id,title,'',content_type, precondition)) # Now we "upload" the data. By doing this in two steps, we # can use a database trick to make the upload more efficient. if file: self._getOb(id).manage_upload(file) if content_type: self._getOb(id).content_type=content_type if REQUEST is not None: REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') def initialize(context): context.registerClass( CMFFile, permission='Add Documents, Images, and Files', constructors=(manage_addFileForm, manage_addFile), ) -- Dieter _______________________________________________ Zope-CMF maillist - Zope-CMF@lists.zope.org http://mail.zope.org/mailman/listinfo/zope-cmf See http://collector.zope.org/CMF for bug reports and feature requests