From ecbfe8e10f5adb5ebab8674fa77b84d5da920be3 Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Thu, 23 Feb 2012 15:53:12 +0900 Subject: [PATCH] Add Webdav/FTP GET and PUT support for editing Components. --- product/ERP5Type/mixin/component.py | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/product/ERP5Type/mixin/component.py b/product/ERP5Type/mixin/component.py index fd1ca0bfff..03d24e2f3c 100644 --- a/product/ERP5Type/mixin/component.py +++ b/product/ERP5Type/mixin/component.py @@ -264,6 +264,38 @@ class ComponentMixin(PropertyRecordableMixin, Base): def _getDynamicModuleNamespace(): raise NotImplementedError + security.declareProtected(Permissions.ModifyPortalContent, 'PUT') + def PUT(self, REQUEST, RESPONSE): + """ + Handle HTTP PUT requests for FTP/Webdav upload, which is object + dependent. For now only set the text content... + """ + self.dav__init(REQUEST, RESPONSE) + self.dav__simpleifhandler(REQUEST, RESPONSE, refresh=1) + + text_content = REQUEST.get('BODY', None) + if text_content is None: + RESPONSE.setStatus(304) + else: + self.setTextContent(text_content) + RESPONSE.setStatus(204) + + return RESPONSE + + security.declareProtected(Permissions.ModifyPortalContent, 'manage_FTPput') + manage_FTPput = PUT + + security.declareProtected(Permissions.AccessContentsInformation, + 'manage_FTPget') + def manage_FTPget(self): + """ + Get source for FTP/Webdav. The default implementation of GET for Webdav, + available in webdav.Resource, calls manage_FTPget + + XXX-arnau: encoding? + """ + return self.getTextContent() + security.declareProtected(Permissions.ModifyPortalContent, 'importFromFilesystem') @classmethod -- 2.30.9