X-Git-Url: https://scm.cri.mines-paristech.fr/git/Plinn.git/blobdiff_plain/360eff57ab014d00d461fdf1d5df65111e0ce85e..9bd0dc7c3396bc90f5cef31a77b67db283fd12b8:/AttachmentTool.py
diff --git a/AttachmentTool.py b/AttachmentTool.py
index 4df5a3f..87535c7 100644
--- a/AttachmentTool.py
+++ b/AttachmentTool.py
@@ -28,8 +28,10 @@ from Acquisition import aq_base
from Globals import InitializeClass
from OFS.SimpleItem import SimpleItem
from OFS.Folder import Folder
-from OFS.Image import File, cookId
+from OFS.Image import cookId
+from Products.Photo.blobbases import File
from zExceptions import Unauthorized
+from zExceptions import BadRequest
from Products.Photo import Photo
from Products.CMFCore.utils import UniqueObject, getToolByName, getUtilityByInterfaceName
from Products.CMFCore.permissions import ModifyPortalContent
@@ -44,7 +46,9 @@ from webdav.common import Locked
from webdav.common import PreconditionFailed
from zope.contenttype import guess_content_type
-
+from libxml2 import HTML_PARSE_RECOVER, HTML_PARSE_NOERROR, HTML_PARSE_NOWARNING
+from libxml2 import htmlReadDoc
+PARSE_OPTIONS = HTML_PARSE_RECOVER + HTML_PARSE_NOERROR + HTML_PARSE_NOWARNING
class AttachmentTool( UniqueObject, SimpleItem):
""" Links attachment objects to contents.
@@ -114,6 +118,16 @@ class AttachmentContainer (Folder):
def __init__(self):
self.id = 'attachments'
+ security.declarePrivate('checkIdAvailable')
+ def checkIdAvailable(self, id):
+ try:
+ self._checkId(id)
+ except BadRequest:
+ return False
+ else:
+ return True
+
+
security.declareProtected(ModifyPortalContent, 'put_upload')
def put_upload(self, REQUEST, RESPONSE):
""" Upload a content thru webdav put method.
@@ -174,7 +188,37 @@ class AttachmentContainer (Folder):
ob.PUT(REQUEST, RESPONSE)
RESPONSE.setStatus(httpRespCode)
RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8')
- return '