Ownership of content

Description

Programmatically manipulate Plone content item's ownership

Introduction

Each content item has an owner user.

Owned item instances are of subclass of AccessControl.Owned

Getting the owner of the item

Example:

# Returns PropertiedUser for Zope admin
# Returns PloneUser for normal users object
context.getOwner()

Changing ownership of content

You can use AccessControl.Owner.changeOwnership:

changeOwnership(self, user, recursive=0)

User is PropertiedUser object.

Example:

# Get the user handle from member data object
user = member.getUser()

# Make the member owner of his home folder
home_folder.changeOwnership(user, recursive=False)
home_folder.reindexObjectSecurity()

Warning

This only changes the owner attribute, not the role assignments. You need to change those too.

Example how to add ownership for additional user using local roles:

home_folder.manage_setLocalRoles(username, ["Owner",])
home_folder.reindexObjectSecurity()

Note

This does not update Dublin Core metadata fields like creator.

Contributors

Contributors is an automatically managed list where persons, who have been editing in the past, real names are listed. Contributors data is available as Python list of real names.

Note

Contributors does not store user references, because one might want to maintain contributor data even after the user has been deleted.

Some sample code:

def format_contributors(contribs):
        """
        @return: String of comma separated list of all contributors
        """

        if len(contribs) == 0:
            return None

        return ", ".join(contribs)

 data = {
        "contributors" : format_contributors(obj.Contributors()),
 }
<span tal:condition="o/contributors">
    <span tal:replace="o/contributors">Jim Smith, Jane Doe</span>
</span>