From abcb2c6e1ce9e766b7037af29f34895b7c2afba1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Tue, 26 Feb 2008 14:38:47 +0000 Subject: [PATCH] Use PermanentURLMixIn to provide permanent URL access everywhere. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@19520 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5OOo/Document/OOoDocument.py | 36 +++++++++++-------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/product/ERP5OOo/Document/OOoDocument.py b/product/ERP5OOo/Document/OOoDocument.py index 1b283aa21e..32dbf4a733 100644 --- a/product/ERP5OOo/Document/OOoDocument.py +++ b/product/ERP5OOo/Document/OOoDocument.py @@ -34,11 +34,14 @@ from xmlrpclib import SafeTransport from AccessControl import ClassSecurityInfo from AccessControl import Unauthorized from OFS.Image import Pdata +from OFS.Image import File as OFSFile +from OFS.content_types import guess_content_type from Products.CMFCore.utils import getToolByName, _setCacheHeaders from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface from Products.ERP5Type.Cache import CachingMethod from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod from Products.ERP5.Document.File import File +from Products.ERP5.Document.Document import PermanentURLMixIn from Products.ERP5.Document.Document import ConversionCacheMixin from Products.ERP5.Document.Document import ConversionError from Products.ERP5.Document.Document import NotConvertedError @@ -73,7 +76,7 @@ class TimeoutTransport(SafeTransport): return SafeTransport.make_connection(self, h) -class OOoDocument(File, ConversionCacheMixin): +class OOoDocument(PermanentURLMixIn, File, ConversionCacheMixin): """ A file document able to convert OOo compatible files to any OOo supported format, to capture metadata and to @@ -472,31 +475,24 @@ class OOoDocument(File, ConversionCacheMixin): file_name = f.filename document = self.get(file_name, None) if document is not None: - self.manage_delObjects([file_name]) - newContent = UnrestrictedMethod(self.portal_contributions.newContent) + self.manage_delObjects([file_name]) # For compatibility with old implementation if file_name.endswith('html'): - web_page = newContent(\ - id=file_name, container=self, portal_type='Web Page', - file_name=file_name, - data=zip_file.read(file_name)) - if web_page.getValidationState() != 'embedded': - # Make sure embedded is set until cleaner solution if found - web_page.edit() - web_page.activate().discoverMetadata() # Maybe we should use contribution tool instead - # Should be embedded + mime = 'text/html' + data = zip_file.read(file_name) else: - image_or_file = newContent(\ - id=file_name, container=self, - portal_type='Image', # Contribution Tool would be better here - file_name=file_name, - data=zip_file.read(file_name)) - if image_or_file.getValidationState() != 'embedded': - # Make sure embedded is set until cleaner solution if found - image_or_file.edit() + mime = guess_content_type(file_name)[0] + data = Pdata(zip_file.read(file_name)) + self.setConversion(data, mime, format='_embedded', file_name=file_name) if must_close: zip_file.close() archive_file.close() + def _getExtensibleContent(self, request, name): + if self.hasConversion(format='_embedded', file_name=name): + mime, data = self.getConversion(format='_embedded', file_name=name) + return OFSFile(name, name, data, content_type=mime) + return PermanentURLMixIn._getExtensibleContent(self, request, name) + # Base format implementation security.declareProtected(Permissions.AccessContentsInformation, 'hasBaseData') def hasBaseData(self): -- 2.30.9