You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@chemistry.apache.org by "Laurent Mignon (JIRA)" <ji...@apache.org> on 2016/04/13 08:40:25 UTC

[jira] [Commented] (CMIS-972) Implement contentStream and properties update in BrowserDocument.checkin method

    [ https://issues.apache.org/jira/browse/CMIS-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15238712#comment-15238712 ] 

Laurent Mignon commented on CMIS-972:
-------------------------------------

[~jpotts] am I wrong when I say that it's not possible to update at the same time the properties and the content of a document by using the atompub binding (regarding the CMIS specifications)? Therefore, how can we keep the 2 protocols interchangeable if one provide less functionalities than the other? May be I'm wrong in the way I understand the specifications of the AtomPub binding...
Regards,
lmi

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