chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laurent Mignon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CMIS-972) Implement contentStream and properties update in BrowserDocument.checkin method
Date Wed, 13 Apr 2016 06:59:25 GMT

    [ 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)

Mime
View raw message