[ https://issues.apache.org/jira/browse/CMIS-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15238726#comment-15238726 ]
Laurent Mignon commented on CMIS-972: ------------------------------------- [~jpotts]I'm wrong, by looking into the java implementation it seems that the checkin can be done by using the HTTP PUT method of an XML document with the properties and the contentStrean serialized in base64. Do you confirm? > Implement contentStream and properties update in BrowserDocument.checkin > method > ------------------------------------------------------------------------------- > > Key: CMIS-972 > URL: https://issues.apache.org/jira/browse/CMIS-972 > Project: Chemistry > Issue Type: Improvement > Components: python-cmislib > Environment: Linux, python 2.7.x, Alfresco 5.0.x > Reporter: Laurent Mignon > Assignee: Jeff Potts > > I've improved the checkin method to allow to update the content stream and > the properties > {code} > diff --git a/src/cmislib/browser/binding.py b/src/cmislib/browser/binding.py > index c9cc8a3..b340eda 100644 > --- a/src/cmislib/browser/binding.py > +++ b/src/cmislib/browser/binding.py > @@ -1743,7 +1743,8 @@ class BrowserDocument(BrowserCmisObject): > self.reload() > return self.getProperties()['cmis:versionSeriesCheckedOutBy'] > > - def checkin(self, checkinComment=None, **kwargs): > + def checkin(self, checkinComment=None, contentFile=None, > contentType=None,ntStream > - policies > - addACEs > - removeACEs > """ > - # TODO implement optional arguments > - # major = true is supposed to be the default but inmemory 0.9 is > throwing an error 500 without it > if not kwargs.has_key('major'): > kwargs['major'] = 'true' > + else: > + kwargs['major'] = 'false' > + props = { > + 'checkinComment': checkinComment, > + } > + props.update(kwargs) > + propCount = 0 > + properties = properties or {} > + for key, value in properties.iteritems(): > + props["propertyId[%s]" % propCount] = key > + props["propertyValue[%s]" % propCount] = value > + propCount += 1 > > - kwargs['checkinComment'] = checkinComment > - > - ciUrl = self._repository.getRootFolderUrl() > + ciUrl = self._repository.getRootFolderUrl() + "?objectId=" + self.id > + "&cmisaction=checkin" > > - # TODO don't hardcode major flag > - props = {"objectId": self.id, > - "cmisaction": "checkIn"} > + contentType, body = encode_multipart_formdata(props, contentFile, > contentType) > > # invoke the URL > result = self._cmisClient.binding.post(ciUrl.encode('utf-8'), > - urlencode(props), > - > 'application/x-www-form-urlencoded', > + body, > + contentType, > self._cmisClient.username, > - self._cmisClient.password, > - **kwargs) > + self._cmisClient.password) > > return getSpecializedObject(BrowserCmisObject(self._cmisClient, > self._repository, data=result)) > {code} > https://github.com/lmignon/python-cmislib/commit/c1ff31b82c6768148e18e766a9cbc5d62bfb5b23?diff=unified -- This message was sent by Atlassian JIRA (v6.3.4#6332)