Skip to main content
https://github.com/collective/collective.workspace/workflows/tests/badge.svg

collective.workspace

Introduction

collective.workspace package for providing ‘membership’ in specific areas of a Plone Site.

It allows you to grant people access to areas of content using a membership group rather than local roles for each user, and to delegate control over that group to people who don’t have access to the site-wide user/group control panel.

collective.workspace provides a collective.workspace.team_workspace behavior that can be enabled for any Dexterity content type. When enabled, it adds a “Roster” tab which is where you can manage the team.

All the functionality takes place via an IWorkspace adapter, which can be overridden to specify:

  • A list of groups, and the roles that each group should receive. These groups are created automatically via a PAS plugin, and automatically granted local roles using a borg.localrole adapter.

  • The schema for which fields should be stored for each member in the roster. This includes checkboxes for the groups, to determine which groups the member is in.

  • Action links for each row in the roster. The default is an “Edit” link which brings up a popup to edit the fields for that person’s roster membership.

  • Action buttons at the bottom of the roster which apply to the rows the user selects. An example of this could be a ‘Send email’ action, so a roster admin can easily email users in the roster.

Unlike similar previous packages (see slc.teamfolder and collective.local.*), collective.workspace supplies its own PAS groups plugin, instead of using standard Plone groups. This means that you can prevent Workspace-specific groups from appearing in the sitewide group control panel.

Some other features are:

  • Membership in a roster is indexed, so you can search the catalog for items of portal_type X that have a particular user in their roster.

  • Events are fired when roster memberships are added/modified/removed.

Basic Installation

  • Add collective.workspace to your buildout eggs.

  • Install collective.workspace in the ‘Add-ons’ section of Plone’s Site Setup.

  • Enable the behaviour on your dexterity content type (Either using GenericSetup or Site Setup -> Dexterity Content Types).

Compatibility

This table shows which version of collective.workspace is compatible with which versions of Plone and Python:

Plone

Python

collective.workspace

6.0+

3.9+

4

5.1, 5.2

2.7 - 3.8

3

4.3, 5.0

2.7

2

Custom Workspace Groups

The default groups available on a workspace are ‘Guests’, ‘Members’, and ‘Admins’. You can customise the groups that are available editing the registry record collective.workspace.available_groups.

Contributors

  • David Glick - Original Author

  • Adam Forsythe-Cheasley - Documentation/Testing

  • Ben Cole - Documentation/Testing

  • Matthew Sital-Singh - Documentation

  • Paul Grunewald - German translation

  • Cillian De Róiste

  • Wolfgang Thomas

  • Alessandro Pisa

Changelog

4.0.0 (2026-10-27)

  • Rerelease as final. [ale-rt]

4.0.0a1 (2026-04-27)

  • Modernize the code to use plone.base and remove deprecation warnings [ale-rt]

  • Support only Python 3.9+ and Plone 6.0+. Removed support for Plone 5.1 and Plone 5.2. Removed the upgrade steps needed for the upgrade from Plone 5.2 to Plone 6.0. If you need to upgrade from Plone 5.2 to Plone 6.0, you should first upgrade to version 3.0.0 of this package, and then upgrade to version 4.0.0. [ale-rt]

3.0.0 (2021-02-17)

  • Fixed upgrade step for the workspace_members indexer (Fixes #44) [reinhardt]

  • Fix deprecation a warning (Fixes #47) [ale-rt]

3.0b2 (2020-06-05)

  • The workspace_members indexer properly returns a set of native strings (Fixes #41) [ale-rt]

3.0b1 (2020-01-27)

  • Add Finnish localization [datakurre]

  • Added the possibility to specify the available groups through the registry record collective.workspace.available_groups [datakurre]

  • The package is now compatible and tested with Plone 5.1 and Plone 5.2 [ale-rt, cillianderoiste]

2.0b3 (2018-05-03)

Bugs fixed:

  • Fixes the automatic groups calculation in some cases. The bug was preventing the users from being added to the Members group in some cases, e.g. during the upgrade step from version 1.x (Fixes #27)

2.0b2 (2018-04-10)

Bugs fixed:

  • an edge case where the migration was failing (Fixes #25)

2.0b1 (2018-03-16)

Changed functionality:

  • The workspace_groups PAS plugin now stores groups in the same way as normal Plone groups, rather than doing catalog queries to find workspaces. This performs much better even without enabling caching for the plugin. These workspace-based groups are updated automatically as workspace rosters are edited. (A separate plugin is used so that listing of workspace groups in the Plone control panel can easily be disabled.)

  • The Members group is no longer displayed as an option in the UI, since it is assigned automatically. Other automatic workspace groups can be configured with arbitrary conditions for inclusion in the group.

  • Copying and pasting a workspace now empties the roster of the copy.

  • Trying to set a membership attribute directly now raises an exception. Membership attributes should be updated using the update method to make sure that all changes are properly accounted for.

  • A last modified time is now tracked for each roster membership.

  • It’s now possible to add a roster entry that isn’t associated with a user (for example, to represent a person who doesn’t have a Plone account).

Bugs fixed:

  • A change to the user of a workspace membership is now handled properly (which might need to happen, for example, when merging users).

  • Membership fields can now have a defaultFactory that is context-aware (the field is now bound to the membershp before fetching the default).

  • When a user is deleted from the site, their memberships in any workspaces are now also deleted.

  • New workspace counters can now be added without breaking existing workspaces.

  • Tools are now looked up using plone.api.portal.get_tool, which helps in some cases where objects are not properly acquisition-wrapped.

  • Make sure UID doesn’t get reset when calling add_to_team with a user who is already in the workspace.

Cleanup:

  • Removed code related to caching (purge_workspace_pas_cache) that is no longer used.

1.4 (unreleased)

  • Nothing changed yet.

1.3 (2016-06-29)

  • Added msgids with i18n domain

  • Added German translation

  • Show status message after adding, removing or updating a roster entry.

  • Fixed issues with caching

1.2 (2016-06-22)

  • Performance improvements

  • Intelligent caching of groups, plus cache invalidation on changes to a workspace

  • Added a new role TeamGuest that can be used to grant reduced access permissions to a workspace

1.1 (2014-07-04)

  • Fixed distribution issues

1.0 (2014-07-04)

  • Initial release

Metadata

Release files for collective.workspace 4.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for collective.workspace 4.0.0
File Size Uploaded Provenance Actions
collective_workspace-4.0.0.tar.gz 35.5 kB Without provenance Details for collective_workspace-4.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for collective.workspace 4.0.0
File Interpreter ABI Platform Actions
collective_workspace-4.0.0-py3-none-any.whl Python 3 none any Details for collective_workspace-4.0.0-py3-none-any.whl

Total release size: 70.5 kB

Release files / collective_workspace-4.0.0.tar.gz

Download URL collective_workspace-4.0.0.tar.gz
Size 35.5 kB
Tags Source
SHA-256 checksum
How to use checksums
01495710e2759ad4ed19c5247b370a23bb9ddef8f2732064818831b1c2dabc3b
BLAKE2b-256 checksum
How to use checksums
4a5402aa95f6ffd29aa68e18b2ad6d7eb6d5e6a82c786ab3ab8603600b55e1e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / collective_workspace-4.0.0-py3-none-any.whl

Download URL collective_workspace-4.0.0-py3-none-any.whl
Size 35.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ad3f9c474eb32e68b031de8df48e0124430adceb1a33cae1c5bf8ceb3f5c7905
BLAKE2b-256 checksum
How to use checksums
d659d009a9f1200989ef3fb86d5f5a4379875cfb67b1b2edd4b37e8eb1e95859
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Security for collective.workspace 4.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page