.. image:: https://github.com/collective/collective.contact.plonegroup/actions/workflows/main.yml/badge.svg
:target: https://github.com/collective/collective.contact.plonegroup/actions/workflows/main.yml
.. image:: https://coveralls.io/repos/collective/collective.contact.plonegroup/badge.png?branch=master
:target: https://coveralls.io/r/collective/collective.contact.plonegroup?branch=master
=============================
collective.contact.plonegroup
=============================
Introduction
============
A Plone add-on that manage organizations and functions, leading to corresponding plone groups creation.
This product makes the link between:
* `collective.contact.core`_ : organization definition containing your organization services (multiple levels)
* `dexterity.localrolesfield`_ : field presenting a list of services for which a local role can be given
How-to
======
First, create a directory in your site (object from collective.contact.core). This directory will contain all the informations related to your contacts.
You can then add your organization in it (with a specific id equal to 'plonegroup-organization').
An organization can contain organizations (such as services, divisions or department).
In the collective.contact.plonegroup configuration panel, you have to :
* select some services of your organization to be used in localroles field
* define some function labels that will be used in each selected organization
When submitting, for each organization - function combination, a plone group is created with the id "organization-uid"_"function-id" and name "organizations-name" ("function-name").
The generated plone groups will be used in localroles field, where some local roles can be given to some function for each selected service.
Installation
============
* Add collective.contact.plonegroup to your eggs.
* Re-run buildout.
* Install the product in your plone site.
Credits
=======
Have an idea? Found a bug? Let us know by `opening a ticket`_.
.. _`opening a ticket`: https://github.com/collective/collective.contact.plonegroup/issues
.. _`collective.contact.core`: https://github.com/collective/collective.contact.core
.. _`dexterity.localrolesfield`: https://github.com/collective/dexterity.localrolesfield
Contributors
============
- Gauthier Bastien, IMIO
- Stéphan Geulette, IMIO
- Vincent Fretin, Ecreall
- Cédric Messiant, Ecreall
- Frédéric Peters, Entr'ouvert
Changelog
=========
1.51 (2024-10-02)
-----------------
- Added helpers `utils.enable_function` and `utils.disable_function`
to easily enable/disable a function.
[gbastien]
1.50 (2024-05-27)
-----------------
- Fixed `DisplayGroupUsersView.group_title` when `DisplayGroupUsersView.short=True`
and group title contains several parenthesis.
[gbastien]
1.49 (2024-04-10)
-----------------
- Corrected behavior zcml definition to avoid message when Plone starts.
[sgeulette]
- Import `safe_encode` from `imio.pyutils` instead `imio.helpers`.
[gbastien]
1.48 (2024-02-19)
-----------------
- Added `behaviors.IPlonegroupUserLink` with userid and primary_organization fields.
[sgeulette]
- Added `utils.get_person_from_userid` and `utils.get_persons_from_userid`
[sgeulette]
1.47 (2023-10-19)
-----------------
- Fixed typo in french translation.
[gbastien]
1.46 (2023-07-07)
-----------------
- Added parameter `omitted_suffixes=[]` to `utils.get_all_suffixes`.
[gbastien]
1.45 (2023-02-27)
-----------------
- Avoid useless variable initialization in `utils.get_plone_group`,
do everything in one line.
[gbastien]
1.44 (2022-08-19)
-----------------
- Warning, changed behavior of `utils.get_organization`, added parameter
`only_in_own_org=True` that will make sure that given `org_uid` is an
organization inside own organization.
[gbastien ]
- Added `get_selected_org_suffix_principal_ids` and `voc_selected_org_suffix_userids`
to work only with group and user ids
[sgeulette]
- Used cached method `get_users_in_plone_groups` from imio.helpers
[sgeulette]
1.43 (2022-07-01)
-----------------
- Added `utils.get_suffixed_groups`.
[sgeulette]
- Do not delete a group (after a function removal) if not empty
[sgeulette]
1.42 (2022-06-14)
-----------------
- Escape user and group title in `DisplayGroupUsersView`.
Moreover fixed column to be not sortable.
[gbastien]
- Added `safe_utils.py` that will only include safe utils.
[gbastien]
- Corrected error in search: do not pass empty portal_type criteria.
[sgeulette]
- Added parameter escaped=True in `voc_selected_org_suffix_users` function
[sgeulette]
- Fixed `@@display-group-users` when organization is not selected in plonegroup
so there is no linked Plone groups, added tests for it and the
`@@suborganizations` view (z3ctable displaying organizations contained in
another organization).
[gbastien]
1.41 (2022-05-06)
-----------------
- Added adapter with methods to check PloneGroupContact delete and transition.
[sgeulette]
1.40 (2022-04-22)
-----------------
- Adapted the `PloneGroupUsersGroupsColumn` to display linked group also when
organization is not selected in plonegroup, this lets display linked Plone groups
of an organization that was selected then unselected.
[gbastien]
1.39 (2022-02-03)
-----------------
- Distinguished cached calls in vocabularies.
[sgeulette]
1.38 (2021-11-26)
-----------------
- In `utils.get_organization` and `utils.get_organizations`, query catalog unrestricted.
[gbastien]
- Removed `uuidToObject` imported from `plone.app.uuid` in `settings.py`,
we use `uuidToObject` from `imio.helpers`.
[gbastien]
1.37 (2021-10-20)
-----------------
- Corrected cache invalidation bug, that wasn't done when a previously deactivated
organisation is reactivated. Invalidate now wider.
[sgeulette]
1.36 (2021-08-27)
-----------------
- Added logging using `collective.fingerpointing` in the
`@@manage-own-groups-users` view when a user was added or removed.
[gbastien]
- Added `available_expr` to the action displaying the `Manage own groups`,
action will be displayed if at least one value is selected in the
`groups_management` field in the configuration.
[gbastien]
- Use `imio.helpers.SortedUsers` vocabulary in the
`@@manage-own-groups-users` view.
[gbastien]
1.35 (2021-05-05)
-----------------
- Fixed `addOrModifyOrganizationGroups` called when an organization is modified,
that was creating Plone groups for every suffixes without considering
`enabled` or `fct_orgs`. Added upgrade step to `v8` that will delete Plone
groups that were wrongly created.
[gbastien]
1.34 (2021-04-20)
-----------------
- Fixed `settings.detectContactPlonegroupChange` where sometimes `event.oldValue`
is None when value is set several times from different testing layers.
[gbastien]
1.33 (2021-01-06)
-----------------
- Do not grok the package anymore.
[gbastien]
- Override vocabulary `PositionTypes` from `collective.contact.core`, when
`context` out of a directory, get `position_types` from `DEFAULT_DIRECTORY_ID`.
[gbastien]
1.32 (2020-10-26)
-----------------
- Fixed `DisplayGroupUsersView.group_title` when `DisplayGroupUsersView.short=True`
to only apply if we have a format like `My config (My suffix)` or it removed
last letter.
[gbastien]
- Added parameter `PloneGroupUsersGroupsColumn.short=True` so
`@@display-group-users` is rendered short by default.
[gbastien]
1.31 (2020-10-11)
-----------------
- Combined v6 and v7 upgrade because it fails coming from v5
[sgeulette]
- Corrected table class name.
[sgeulette]
1.30 (2020-10-02)
-----------------
- Added manage-own-groups-users view and functions/groups selection configuration.
A user can manage the user assignments of his groups.
[sgeulette]
- Avoid getting groups (only users) in `get_selected_org_suffix_users` function.
[sgeulette]
- Avoid GroupNotFoundError in `get_selected_org_suffix_users` if suffix is limited to some organizations.
[sgeulette]
- Added `BaseOrganizationServicesVocabulary._term_value` and
`BaseOrganizationServicesVocabulary._term_token` to ease override
of rendered term value and token.
[gbastien]
- Make `SelectedOrganizationsElephantVocabulary` inherits from
`OwnOrganizationServicesVocabulary` so methods `_term_value` and
`_term_token` are available.
[gbastien]
- In `@@display-group-users` instead displaying contained groups without
contained members, display members of contained groups for normal users,
display contained groups and contained members to Managers.
[gbastien]
- Fixed `ConnectionStateError` while setting `registry[FUNCTIONS_REGISTRY]`
in tests and profile is applied several times.
[gbastien]
1.29.1 (2020-08-26)
-------------------
- Fix CSS for `@@display-group-users` view when current user not a Manager
and so does not have link on prefixed icon (user/group).
[gbastien]
1.29 (2020-08-18)
-----------------
- Added `PloneGroupUsersGroupsColumn`, a column that displays suffixed groups
and users, to be called on dashboard displaying organizations.
The groups and users are rendered by the `@@display-group-users` view
that may also be used outside.
By default, as groups and users may be very long to display, it is hidden
in a collapsible `<div>` and displayed asynchronously.
[gbastien]
- Added possibility to disable a `function` (`enabled=True` by default),
this is useful to avoid deleting a `function` and re-adding it after,
sometimes faultly. Adapted `utils.get_all_suffixes(only_enabled=True)`
to only get enabled functions.
Added upgrade step to version `6` to manage new value `enabled=True`
in `functions` stored in the `regsitry`.
[gbastien]
- Remove item `UID` from link in `OrgaPrettyLinkWithAdditionalInfosColumn`
as it is now displayed as additional information by default.
[gbastien]
1.28 (2020-05-26)
-----------------
- In `utils.get_organizations`, do not use a `list comprehension` to turn
result of `get_registry_organizations` into a list as it is already the case
(was not the case a long time ago), `get_registry_organizations` returns a
new list and values stored in the registry will not be changed anymore by
default.
[gbastien]
1.27 (2020-05-08)
-----------------
- Make the `OrgaPrettyLinkWithAdditionalInfosColumn` also work for `person` and `held_position`.
[gbastien]
1.26 (2020-03-12)
-----------------
- As vocabulary `ram.cache` cachekey are generated based on
module/class names, renamed vocabularies
`collective.contact.plonegroup.selected_organization_services` to
`collective.contact.plonegroup.browser.settings.SelectedOrganizationsElephantVocabulary`
and `collective.contact.plonegroup.sorted_selected_organization_services` to
`collective.contact.plonegroup.browser.settings.SortedSelectedOrganizationsElephantVocabulary`.
Added tests showing that cache is correctly invalidated when selected organizations changed.
[gbastien]
1.25 (2020-02-06)
-----------------
- Use `collective.contact.plonegroup.sorted_selected_organization_services`
for `settings.IFunctionSchema.fct_orgs`
(field for restricting a suffix to some organizations).
[gbastien]
- In `validateSettings` invariant check if Plone group is empty using
`getGroupMembers` that ignores `<not found>` users instead `getMemberIds`.
[gbastien]
1.24 (2019-11-25)
-----------------
- Added group_as_str param in organizations_with_suffixes function.
[sgeulette]
1.23 (2019-11-04)
-----------------
- Added parameter `caching=True` to `utils.get_organization`, this will store
the organization object in the REQUEST and avoid too much catalog queries.
[gbastien]
1.22 (2019-09-26)
-----------------
- When passing `kept_org_uids` to `utils.get_organizations`,
make sure order is preserved.
[gbastien]
1.21 (2019-09-13)
-----------------
- Added `BaseOrganizationServicesVocabulary._term_title` to ease override of
rendered term title.
[gbastien]
1.20 (2019-09-12)
-----------------
- Added `collective.contact.plonegroup.every_organizations` vocabulary, to do
this needed to write `BaseOrganizationServicesVocabulary` from which
`OwnOrganizationServicesVocabulary` and `EveryOrganizationsVocabulary`
inherits.
[gbastien]
- Removed sorting on term title for
`collective.contact.plonegroup.selected_organization_services`, terms are
displayed following selection order in plonegroup organizations like before.
Added new vocabulary sorted on term title and available as
`collective.contact.plonegroup.sorted_selected_organization_services`.
[gbastien]
1.19 (2019-08-23)
-----------------
- Optimized `OwnOrganizationServicesVocabulary.listSubOrganizations`, do the
catalog query only if current organization contains something.
[gbastien]
1.18 (2019-08-02)
-----------------
- In `OrgaPrettyLinkWithAdditionalInfosColumn`, set `showContentIcon` to True
and enable `link-tooltip`.
[gbastien]
- In `SelectedInPlonegroupColumn`, display `Not` in bold.
[gbastien]
- Added `collective.contact.plonegroup.functions` vocabulary listing every
functions defined in plonegroup control panel.
[gbastien]
1.17 (2019-07-15)
-----------------
- Corrected bad full title shortening.
[sgeulette]
1.16 (2019-06-30)
-----------------
- Fixed error in `OrgaPrettyLinkWithAdditionalInfosColumn` when displaying
organizations out of `PLONEGROUP_ORG`.
[gbastien]
- Fixed `utils.get_organizations` when `caching=True` to store a new list of
organizations in the cache instead returned value or value in cache may be
modified if we modify returned value in a sub method...
[gbastien]
- Use `get_registry_organizations/set_registry_organizations` and
`get_registry_functions/set_registry_functions` as much as possible.
[gbastien]
1.15 (2019-06-07)
-----------------
- Fixed problem, linked Plone groups title were not updated when suffix title
changed and some `fct_orgs` were defined.
[gbastien]
- In `settings.detectContactPlonegroupChange`, set `changes = True` only when
relevant, due to wrong indentation, it was done systematically.
[gbastien]
1.14 (2019-05-16)
-----------------
- Make `OrgaPrettyLinkWithAdditionalInfosColumn` work if displaying the
`plonegroup-organization`, include link to plonegroup configuration panel in
`SelectedInPlonegroupColumn` header.
[gbastien]
- Changed first parameter name for `utils.get_plone_group` and
`utils.get_plone_group_id` from `org_uid` to `prefix` as it can be used in
other cases.
[gbastien]
- Added helper method `utils.select_org_for_function` to be able to add/remove
an organization uid from `fct_orgs` defined on a `function`.
[gbastien]
- Removed dependency on `unittest2`.
[gbastien]
- When calling `config.get_registry_organizations` and
`config.get_registry_functions`, by default return a copy of stored data to
avoid changing it.
[gbastien]
- Added parameter `default=True` to `utils.get_own_organization`, in this case,
default ids for `root directory` and `own organization` are used instead
using a catalog query, it should be faster.
[gbastien]
1.13 (2019-01-11)
-----------------
- Use unrestrictedSearchResults to check link integrity.
[sgeulette]
- Added helpers config.get_registry_organizations,
config.get_registry_functions, config.set_registry_organizations and
config.set_registry_functions to easily get and set organizations/functions
registry records.
[gbastien]
1.12 (2018-12-11)
-----------------
- Added parameter `kept_org_uids` to `utils.get_organizations` to only keep
organizations having defined UID.
[gbastien]
- Sort `collective.contact.plonegroup.selected_organization_services`
vocabulary by value title.
[gbastien]
- Display the organization UID next to title in the `suborganizations` view.
[gbastien]
1.11 (2018-11-20)
-----------------
- In utils.get_organizations, call uuidsToObjects with ordered=True to get
organizations in correct order because the catalog query is not sorted.
[gbastien]
- Fixed migration that adds 'fct_orgs' to functions.
[gbastien]
1.10 (2018-10-12)
-----------------
- Removed grok for OwnOrganizationServicesVocabulary.
[gbastien]
- Added utils.get_organization to get an organization corresponding
to a given plone_group_id.
[gbastien]
- Added utils.get_organizations to get every plonegroup organizations. It is
possible to get every selectable or selected organizations, as objects or not
and for which a particular linked Plone group (suffix) is not empty.
[gbastien]
- Added utils.get_all_suffixes that returns every defined functions ids.
[gbastien]
- Added possibility to restrict suffixes to only some selected organizations.
Plone groups will only be created for selected organizations. When selecting or
unselecting organizations, linked Plone groups are created/deleted accordingly.
[gbastien]
- Moved setting.getOwnOrganizationPath to
utils.get_own_organization/utils.get_own_organization_path.
[gbastien]
- Added method utils.get_plone_groups that returns every Plone groups of a
given organization.
[gbastien]
- Added utils.get_plone_group that returns a Plone group for given organization
UID and suffix.
[gbastien]
- Disabled auto_append on IContactPlonegroupConfig.functions DataGridField.
[gbastien]
- Notify event PlonegroupGroupCreatedEvent when a Plone group linked to an
organization is created.
[gbastien]
- z3c.table batching does not work when displaying suborganizations, so set
batchSize and startBatchingAt to 999 instead 200 so we are pretty sure it is
never displayed.
[gbastien]
- While displaying "@@suborganizations", display a specific message "No suborganization"
when no suborganizations instead displaying nothing.
[gbastien]
- Added default logger importable from collective.contact.plonegroup.
[gbastien]
- Added utils.select_organization to be able to select or unselect an
organization from organizations registry.
[gbastien]
- While creating Plone groups, translate suffix displayed in title.
[gbastien]
1.9 (2018-09-04)
----------------
- Added utils.get_plone_group_id to get Plone group id for given organization and suffix.
[gbastien]
- Overrided "@@suborganizations" view to display the entire hierarchy of contained
organizations and sub-organizations and more informations in a table.
[gbastien]
- When the plonegroup-organization is displayed in a tooltip, use original way
to display sub organizations because the new rendering using the table takes
too much place in the tooltip.
[gbastien]
1.8.1 (2018-07-30)
------------------
- Sort user vocabulary by fullname
[sgeulette]
- Added cache on travis.
[sgeulette]
1.8 (2017-09-18)
----------------
- Corrected error when deleting site.
[sgeulette]
- Corrected group modification. Added migration step.
[sgeulette]
1.7 (2017-07-25)
----------------
- Check if linkintegrity is enabled in events.
[sgeulette]
1.6 (2017-05-30)
----------------
- Use manager role only if necessary to avoid "SystemError: Excessive recursion" when recataloging
[sgeulette]
- Protect against group deletion
[sgeulette]
- Corrected subscriber at object paste
[sgeulette]
1.5 (2016-12-13)
----------------
- Get selected organizations with manager role because plone.formwidget.masterselect calls ++widget++ as Anonymous.
[sgeulette]
1.4 (2016-12-07)
----------------
- Call only once a subscriber.
[sgeulette]
- Improved util method and added test
[sgeulette]
- Added method to get selected organizations with customized title
[sgeulette]
- Added methods to get orgs users and vocabulary
[sgeulette]
1.3 (2016-04-15)
----------------
- Use a stored cache key to invalidate cache on all zeo clients
[sgeulette]
1.2 (2016-01-13)
----------------
- Made an unrestricted search to list own organizations, possible reason of empty list
[sgeulette]
- Increase OrderedSelectWidget size to 15 lines.
[sgeulette]
- Use the same permission to protect config view and configlet.
[sgeulette]
1.1 (2015-12-11)
----------------
- Put title as unicode in vocabulary.
[sgeulette]
1.0 (2015-11-24)
----------------
- Added link integrity check when deleting a plonegroup organization
[sgeulette]
- Added marker interfaces to distinguish plonegroup organizations
[sgeulette]
- Added selected organizations vocabulary as elephantvocabulary: display correctly no more selected terms.
[sgeulette]
- Don't deactivate a used plonegroup organization
[sgeulette]
- Check state to build OwnOrganizationServicesVocabulary.
[cedricmessiant]
- Set token to UID in OwnOrganizationServicesVocabulary.
[sgeulette]
- Give access to configlet to Site Administrator
[sgeulette]
- Flake8 corrections
[sgeulette]
0.2 (2014-03-18)
----------------
- Corrected Manifest to include all files.
0.1 (2014-02-13)
----------------
- Initial release.
[sgeulette]
Raw data
{
"_id": null,
"home_page": "https://github.com/collective/collective.contact.plonegroup",
"name": "collective.contact.plonegroup",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "plone contact management group suffix",
"author": "Ecreall, Entrouvert, IMIO",
"author_email": "s.geulette@imio.be",
"download_url": "https://files.pythonhosted.org/packages/7c/a5/5b0d764c8d490be23f47c33a125b05d945c8b293938351b54074ee7bc385/collective.contact.plonegroup-1.51.tar.gz",
"platform": null,
"description": ".. image:: https://github.com/collective/collective.contact.plonegroup/actions/workflows/main.yml/badge.svg\n :target: https://github.com/collective/collective.contact.plonegroup/actions/workflows/main.yml\n\n.. image:: https://coveralls.io/repos/collective/collective.contact.plonegroup/badge.png?branch=master\n :target: https://coveralls.io/r/collective/collective.contact.plonegroup?branch=master\n\n=============================\ncollective.contact.plonegroup\n=============================\n\nIntroduction\n============\n\nA Plone add-on that manage organizations and functions, leading to corresponding plone groups creation.\nThis product makes the link between:\n\n* `collective.contact.core`_ : organization definition containing your organization services (multiple levels)\n* `dexterity.localrolesfield`_ : field presenting a list of services for which a local role can be given\n\nHow-to\n======\n\nFirst, create a directory in your site (object from collective.contact.core). This directory will contain all the informations related to your contacts.\n\nYou can then add your organization in it (with a specific id equal to 'plonegroup-organization').\nAn organization can contain organizations (such as services, divisions or department).\n\nIn the collective.contact.plonegroup configuration panel, you have to :\n\n* select some services of your organization to be used in localroles field\n* define some function labels that will be used in each selected organization\n\nWhen submitting, for each organization - function combination, a plone group is created with the id \"organization-uid\"_\"function-id\" and name \"organizations-name\" (\"function-name\").\n\nThe generated plone groups will be used in localroles field, where some local roles can be given to some function for each selected service.\n\nInstallation\n============\n\n* Add collective.contact.plonegroup to your eggs.\n* Re-run buildout.\n* Install the product in your plone site.\n\nCredits\n=======\n\nHave an idea? Found a bug? Let us know by `opening a ticket`_.\n\n.. _`opening a ticket`: https://github.com/collective/collective.contact.plonegroup/issues\n.. _`collective.contact.core`: https://github.com/collective/collective.contact.core\n.. _`dexterity.localrolesfield`: https://github.com/collective/dexterity.localrolesfield\n\nContributors\n============\n\n- Gauthier Bastien, IMIO\n- St\u00e9phan Geulette, IMIO\n- Vincent Fretin, Ecreall\n- C\u00e9dric Messiant, Ecreall\n- Fr\u00e9d\u00e9ric Peters, Entr'ouvert\n\nChangelog\n=========\n\n1.51 (2024-10-02)\n-----------------\n\n- Added helpers `utils.enable_function` and `utils.disable_function`\n to easily enable/disable a function.\n [gbastien]\n\n1.50 (2024-05-27)\n-----------------\n\n- Fixed `DisplayGroupUsersView.group_title` when `DisplayGroupUsersView.short=True`\n and group title contains several parenthesis.\n [gbastien]\n\n1.49 (2024-04-10)\n-----------------\n\n- Corrected behavior zcml definition to avoid message when Plone starts.\n [sgeulette]\n- Import `safe_encode` from `imio.pyutils` instead `imio.helpers`.\n [gbastien]\n\n1.48 (2024-02-19)\n-----------------\n\n- Added `behaviors.IPlonegroupUserLink` with userid and primary_organization fields.\n [sgeulette]\n- Added `utils.get_person_from_userid` and `utils.get_persons_from_userid`\n [sgeulette]\n\n1.47 (2023-10-19)\n-----------------\n\n- Fixed typo in french translation.\n [gbastien]\n\n1.46 (2023-07-07)\n-----------------\n\n- Added parameter `omitted_suffixes=[]` to `utils.get_all_suffixes`.\n [gbastien]\n\n1.45 (2023-02-27)\n-----------------\n\n- Avoid useless variable initialization in `utils.get_plone_group`,\n do everything in one line.\n [gbastien]\n\n1.44 (2022-08-19)\n-----------------\n\n- Warning, changed behavior of `utils.get_organization`, added parameter\n `only_in_own_org=True` that will make sure that given `org_uid` is an\n organization inside own organization.\n [gbastien ]\n- Added `get_selected_org_suffix_principal_ids` and `voc_selected_org_suffix_userids`\n to work only with group and user ids\n [sgeulette]\n- Used cached method `get_users_in_plone_groups` from imio.helpers\n [sgeulette]\n\n1.43 (2022-07-01)\n-----------------\n\n- Added `utils.get_suffixed_groups`.\n [sgeulette]\n- Do not delete a group (after a function removal) if not empty\n [sgeulette]\n\n1.42 (2022-06-14)\n-----------------\n\n- Escape user and group title in `DisplayGroupUsersView`.\n Moreover fixed column to be not sortable.\n [gbastien]\n- Added `safe_utils.py` that will only include safe utils.\n [gbastien]\n- Corrected error in search: do not pass empty portal_type criteria.\n [sgeulette]\n- Added parameter escaped=True in `voc_selected_org_suffix_users` function\n [sgeulette]\n- Fixed `@@display-group-users` when organization is not selected in plonegroup\n so there is no linked Plone groups, added tests for it and the\n `@@suborganizations` view (z3ctable displaying organizations contained in\n another organization).\n [gbastien]\n\n1.41 (2022-05-06)\n-----------------\n\n- Added adapter with methods to check PloneGroupContact delete and transition.\n [sgeulette]\n\n1.40 (2022-04-22)\n-----------------\n\n- Adapted the `PloneGroupUsersGroupsColumn` to display linked group also when\n organization is not selected in plonegroup, this lets display linked Plone groups\n of an organization that was selected then unselected.\n [gbastien]\n\n1.39 (2022-02-03)\n-----------------\n\n- Distinguished cached calls in vocabularies.\n [sgeulette]\n\n1.38 (2021-11-26)\n-----------------\n\n- In `utils.get_organization` and `utils.get_organizations`, query catalog unrestricted.\n [gbastien]\n- Removed `uuidToObject` imported from `plone.app.uuid` in `settings.py`,\n we use `uuidToObject` from `imio.helpers`.\n [gbastien]\n\n1.37 (2021-10-20)\n-----------------\n\n- Corrected cache invalidation bug, that wasn't done when a previously deactivated\n organisation is reactivated. Invalidate now wider.\n [sgeulette]\n\n1.36 (2021-08-27)\n-----------------\n\n- Added logging using `collective.fingerpointing` in the\n `@@manage-own-groups-users` view when a user was added or removed.\n [gbastien]\n- Added `available_expr` to the action displaying the `Manage own groups`,\n action will be displayed if at least one value is selected in the\n `groups_management` field in the configuration.\n [gbastien]\n- Use `imio.helpers.SortedUsers` vocabulary in the\n `@@manage-own-groups-users` view.\n [gbastien]\n\n1.35 (2021-05-05)\n-----------------\n\n- Fixed `addOrModifyOrganizationGroups` called when an organization is modified,\n that was creating Plone groups for every suffixes without considering\n `enabled` or `fct_orgs`. Added upgrade step to `v8` that will delete Plone\n groups that were wrongly created.\n [gbastien]\n\n1.34 (2021-04-20)\n-----------------\n\n- Fixed `settings.detectContactPlonegroupChange` where sometimes `event.oldValue`\n is None when value is set several times from different testing layers.\n [gbastien]\n\n1.33 (2021-01-06)\n-----------------\n\n- Do not grok the package anymore.\n [gbastien]\n- Override vocabulary `PositionTypes` from `collective.contact.core`, when\n `context` out of a directory, get `position_types` from `DEFAULT_DIRECTORY_ID`.\n [gbastien]\n\n1.32 (2020-10-26)\n-----------------\n\n- Fixed `DisplayGroupUsersView.group_title` when `DisplayGroupUsersView.short=True`\n to only apply if we have a format like `My config (My suffix)` or it removed\n last letter.\n [gbastien]\n- Added parameter `PloneGroupUsersGroupsColumn.short=True` so\n `@@display-group-users` is rendered short by default.\n [gbastien]\n\n1.31 (2020-10-11)\n-----------------\n\n- Combined v6 and v7 upgrade because it fails coming from v5\n [sgeulette]\n- Corrected table class name.\n [sgeulette]\n\n1.30 (2020-10-02)\n-----------------\n\n- Added manage-own-groups-users view and functions/groups selection configuration.\n A user can manage the user assignments of his groups.\n [sgeulette]\n- Avoid getting groups (only users) in `get_selected_org_suffix_users` function.\n [sgeulette]\n- Avoid GroupNotFoundError in `get_selected_org_suffix_users` if suffix is limited to some organizations.\n [sgeulette]\n- Added `BaseOrganizationServicesVocabulary._term_value` and\n `BaseOrganizationServicesVocabulary._term_token` to ease override\n of rendered term value and token.\n [gbastien]\n- Make `SelectedOrganizationsElephantVocabulary` inherits from\n `OwnOrganizationServicesVocabulary` so methods `_term_value` and\n `_term_token` are available.\n [gbastien]\n- In `@@display-group-users` instead displaying contained groups without\n contained members, display members of contained groups for normal users,\n display contained groups and contained members to Managers.\n [gbastien]\n- Fixed `ConnectionStateError` while setting `registry[FUNCTIONS_REGISTRY]`\n in tests and profile is applied several times.\n [gbastien]\n\n1.29.1 (2020-08-26)\n-------------------\n\n- Fix CSS for `@@display-group-users` view when current user not a Manager\n and so does not have link on prefixed icon (user/group).\n [gbastien]\n\n1.29 (2020-08-18)\n-----------------\n\n- Added `PloneGroupUsersGroupsColumn`, a column that displays suffixed groups\n and users, to be called on dashboard displaying organizations.\n The groups and users are rendered by the `@@display-group-users` view\n that may also be used outside.\n By default, as groups and users may be very long to display, it is hidden\n in a collapsible `<div>` and displayed asynchronously.\n [gbastien]\n- Added possibility to disable a `function` (`enabled=True` by default),\n this is useful to avoid deleting a `function` and re-adding it after,\n sometimes faultly. Adapted `utils.get_all_suffixes(only_enabled=True)`\n to only get enabled functions.\n Added upgrade step to version `6` to manage new value `enabled=True`\n in `functions` stored in the `regsitry`.\n [gbastien]\n- Remove item `UID` from link in `OrgaPrettyLinkWithAdditionalInfosColumn`\n as it is now displayed as additional information by default.\n [gbastien]\n\n1.28 (2020-05-26)\n-----------------\n\n- In `utils.get_organizations`, do not use a `list comprehension` to turn\n result of `get_registry_organizations` into a list as it is already the case\n (was not the case a long time ago), `get_registry_organizations` returns a\n new list and values stored in the registry will not be changed anymore by\n default.\n [gbastien]\n\n1.27 (2020-05-08)\n-----------------\n\n- Make the `OrgaPrettyLinkWithAdditionalInfosColumn` also work for `person` and `held_position`.\n [gbastien]\n\n1.26 (2020-03-12)\n-----------------\n\n- As vocabulary `ram.cache` cachekey are generated based on\n module/class names, renamed vocabularies\n `collective.contact.plonegroup.selected_organization_services` to\n `collective.contact.plonegroup.browser.settings.SelectedOrganizationsElephantVocabulary`\n and `collective.contact.plonegroup.sorted_selected_organization_services` to\n `collective.contact.plonegroup.browser.settings.SortedSelectedOrganizationsElephantVocabulary`.\n Added tests showing that cache is correctly invalidated when selected organizations changed.\n [gbastien]\n\n1.25 (2020-02-06)\n-----------------\n\n- Use `collective.contact.plonegroup.sorted_selected_organization_services`\n for `settings.IFunctionSchema.fct_orgs`\n (field for restricting a suffix to some organizations).\n [gbastien]\n- In `validateSettings` invariant check if Plone group is empty using\n `getGroupMembers` that ignores `<not found>` users instead `getMemberIds`.\n [gbastien]\n\n1.24 (2019-11-25)\n-----------------\n\n- Added group_as_str param in organizations_with_suffixes function.\n [sgeulette]\n\n1.23 (2019-11-04)\n-----------------\n\n- Added parameter `caching=True` to `utils.get_organization`, this will store\n the organization object in the REQUEST and avoid too much catalog queries.\n [gbastien]\n\n1.22 (2019-09-26)\n-----------------\n\n- When passing `kept_org_uids` to `utils.get_organizations`,\n make sure order is preserved.\n [gbastien]\n\n1.21 (2019-09-13)\n-----------------\n\n- Added `BaseOrganizationServicesVocabulary._term_title` to ease override of\n rendered term title.\n [gbastien]\n\n1.20 (2019-09-12)\n-----------------\n\n- Added `collective.contact.plonegroup.every_organizations` vocabulary, to do\n this needed to write `BaseOrganizationServicesVocabulary` from which\n `OwnOrganizationServicesVocabulary` and `EveryOrganizationsVocabulary`\n inherits.\n [gbastien]\n- Removed sorting on term title for\n `collective.contact.plonegroup.selected_organization_services`, terms are\n displayed following selection order in plonegroup organizations like before.\n Added new vocabulary sorted on term title and available as\n `collective.contact.plonegroup.sorted_selected_organization_services`.\n [gbastien]\n\n1.19 (2019-08-23)\n-----------------\n\n- Optimized `OwnOrganizationServicesVocabulary.listSubOrganizations`, do the\n catalog query only if current organization contains something.\n [gbastien]\n\n1.18 (2019-08-02)\n-----------------\n\n- In `OrgaPrettyLinkWithAdditionalInfosColumn`, set `showContentIcon` to True\n and enable `link-tooltip`.\n [gbastien]\n- In `SelectedInPlonegroupColumn`, display `Not` in bold.\n [gbastien]\n- Added `collective.contact.plonegroup.functions` vocabulary listing every\n functions defined in plonegroup control panel.\n [gbastien]\n\n1.17 (2019-07-15)\n-----------------\n\n- Corrected bad full title shortening.\n [sgeulette]\n\n1.16 (2019-06-30)\n-----------------\n\n- Fixed error in `OrgaPrettyLinkWithAdditionalInfosColumn` when displaying\n organizations out of `PLONEGROUP_ORG`.\n [gbastien]\n- Fixed `utils.get_organizations` when `caching=True` to store a new list of\n organizations in the cache instead returned value or value in cache may be\n modified if we modify returned value in a sub method...\n [gbastien]\n- Use `get_registry_organizations/set_registry_organizations` and\n `get_registry_functions/set_registry_functions` as much as possible.\n [gbastien]\n\n1.15 (2019-06-07)\n-----------------\n\n- Fixed problem, linked Plone groups title were not updated when suffix title\n changed and some `fct_orgs` were defined.\n [gbastien]\n- In `settings.detectContactPlonegroupChange`, set `changes = True` only when\n relevant, due to wrong indentation, it was done systematically.\n [gbastien]\n\n1.14 (2019-05-16)\n-----------------\n\n- Make `OrgaPrettyLinkWithAdditionalInfosColumn` work if displaying the\n `plonegroup-organization`, include link to plonegroup configuration panel in\n `SelectedInPlonegroupColumn` header.\n [gbastien]\n- Changed first parameter name for `utils.get_plone_group` and\n `utils.get_plone_group_id` from `org_uid` to `prefix` as it can be used in\n other cases.\n [gbastien]\n- Added helper method `utils.select_org_for_function` to be able to add/remove\n an organization uid from `fct_orgs` defined on a `function`.\n [gbastien]\n- Removed dependency on `unittest2`.\n [gbastien]\n- When calling `config.get_registry_organizations` and\n `config.get_registry_functions`, by default return a copy of stored data to\n avoid changing it.\n [gbastien]\n- Added parameter `default=True` to `utils.get_own_organization`, in this case,\n default ids for `root directory` and `own organization` are used instead\n using a catalog query, it should be faster.\n [gbastien]\n\n1.13 (2019-01-11)\n-----------------\n\n- Use unrestrictedSearchResults to check link integrity.\n [sgeulette]\n- Added helpers config.get_registry_organizations,\n config.get_registry_functions, config.set_registry_organizations and\n config.set_registry_functions to easily get and set organizations/functions\n registry records.\n [gbastien]\n\n1.12 (2018-12-11)\n-----------------\n\n- Added parameter `kept_org_uids` to `utils.get_organizations` to only keep\n organizations having defined UID.\n [gbastien]\n- Sort `collective.contact.plonegroup.selected_organization_services`\n vocabulary by value title.\n [gbastien]\n- Display the organization UID next to title in the `suborganizations` view.\n [gbastien]\n\n1.11 (2018-11-20)\n-----------------\n\n- In utils.get_organizations, call uuidsToObjects with ordered=True to get\n organizations in correct order because the catalog query is not sorted.\n [gbastien]\n- Fixed migration that adds 'fct_orgs' to functions.\n [gbastien]\n\n1.10 (2018-10-12)\n-----------------\n\n- Removed grok for OwnOrganizationServicesVocabulary.\n [gbastien]\n- Added utils.get_organization to get an organization corresponding\n to a given plone_group_id.\n [gbastien]\n- Added utils.get_organizations to get every plonegroup organizations. It is\n possible to get every selectable or selected organizations, as objects or not\n and for which a particular linked Plone group (suffix) is not empty.\n [gbastien]\n- Added utils.get_all_suffixes that returns every defined functions ids.\n [gbastien]\n- Added possibility to restrict suffixes to only some selected organizations.\n Plone groups will only be created for selected organizations. When selecting or\n unselecting organizations, linked Plone groups are created/deleted accordingly.\n [gbastien]\n- Moved setting.getOwnOrganizationPath to\n utils.get_own_organization/utils.get_own_organization_path.\n [gbastien]\n- Added method utils.get_plone_groups that returns every Plone groups of a\n given organization.\n [gbastien]\n- Added utils.get_plone_group that returns a Plone group for given organization\n UID and suffix.\n [gbastien]\n- Disabled auto_append on IContactPlonegroupConfig.functions DataGridField.\n [gbastien]\n- Notify event PlonegroupGroupCreatedEvent when a Plone group linked to an\n organization is created.\n [gbastien]\n- z3c.table batching does not work when displaying suborganizations, so set\n batchSize and startBatchingAt to 999 instead 200 so we are pretty sure it is\n never displayed.\n [gbastien]\n- While displaying \"@@suborganizations\", display a specific message \"No suborganization\"\n when no suborganizations instead displaying nothing.\n [gbastien]\n- Added default logger importable from collective.contact.plonegroup.\n [gbastien]\n- Added utils.select_organization to be able to select or unselect an\n organization from organizations registry.\n [gbastien]\n- While creating Plone groups, translate suffix displayed in title.\n [gbastien]\n\n1.9 (2018-09-04)\n----------------\n\n- Added utils.get_plone_group_id to get Plone group id for given organization and suffix.\n [gbastien]\n- Overrided \"@@suborganizations\" view to display the entire hierarchy of contained\n organizations and sub-organizations and more informations in a table.\n [gbastien]\n- When the plonegroup-organization is displayed in a tooltip, use original way\n to display sub organizations because the new rendering using the table takes\n too much place in the tooltip.\n [gbastien]\n\n1.8.1 (2018-07-30)\n------------------\n\n- Sort user vocabulary by fullname\n [sgeulette]\n- Added cache on travis.\n [sgeulette]\n\n1.8 (2017-09-18)\n----------------\n\n- Corrected error when deleting site.\n [sgeulette]\n- Corrected group modification. Added migration step.\n [sgeulette]\n\n1.7 (2017-07-25)\n----------------\n\n- Check if linkintegrity is enabled in events.\n [sgeulette]\n\n1.6 (2017-05-30)\n----------------\n\n- Use manager role only if necessary to avoid \"SystemError: Excessive recursion\" when recataloging\n [sgeulette]\n- Protect against group deletion\n [sgeulette]\n- Corrected subscriber at object paste\n [sgeulette]\n\n1.5 (2016-12-13)\n----------------\n\n- Get selected organizations with manager role because plone.formwidget.masterselect calls ++widget++ as Anonymous.\n [sgeulette]\n\n1.4 (2016-12-07)\n----------------\n\n- Call only once a subscriber.\n [sgeulette]\n- Improved util method and added test\n [sgeulette]\n- Added method to get selected organizations with customized title\n [sgeulette]\n- Added methods to get orgs users and vocabulary\n [sgeulette]\n\n1.3 (2016-04-15)\n----------------\n\n- Use a stored cache key to invalidate cache on all zeo clients\n [sgeulette]\n\n1.2 (2016-01-13)\n----------------\n\n- Made an unrestricted search to list own organizations, possible reason of empty list\n [sgeulette]\n- Increase OrderedSelectWidget size to 15 lines.\n [sgeulette]\n- Use the same permission to protect config view and configlet.\n [sgeulette]\n\n1.1 (2015-12-11)\n----------------\n\n- Put title as unicode in vocabulary.\n [sgeulette]\n\n1.0 (2015-11-24)\n----------------\n\n- Added link integrity check when deleting a plonegroup organization\n [sgeulette]\n- Added marker interfaces to distinguish plonegroup organizations\n [sgeulette]\n- Added selected organizations vocabulary as elephantvocabulary: display correctly no more selected terms.\n [sgeulette]\n- Don't deactivate a used plonegroup organization\n [sgeulette]\n- Check state to build OwnOrganizationServicesVocabulary.\n [cedricmessiant]\n- Set token to UID in OwnOrganizationServicesVocabulary.\n [sgeulette]\n- Give access to configlet to Site Administrator\n [sgeulette]\n- Flake8 corrections\n [sgeulette]\n\n\n0.2 (2014-03-18)\n----------------\n\n- Corrected Manifest to include all files.\n\n\n0.1 (2014-02-13)\n----------------\n\n- Initial release.\n [sgeulette]",
"bugtrack_url": null,
"license": "GPL",
"summary": "Organizations and functions combinations to create plone groups",
"version": "1.51",
"project_urls": {
"Download": "https://pypi.org/project/collective.contact.plonegroup",
"Homepage": "https://github.com/collective/collective.contact.plonegroup"
},
"split_keywords": [
"plone",
"contact",
"management",
"group",
"suffix"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7ca55b0d764c8d490be23f47c33a125b05d945c8b293938351b54074ee7bc385",
"md5": "bbab03c0846ade741482e7d695890efc",
"sha256": "419e4df93579207455bac98a31d3be2dc1238b6e20d772711fd549bd71a095cb"
},
"downloads": -1,
"filename": "collective.contact.plonegroup-1.51.tar.gz",
"has_sig": false,
"md5_digest": "bbab03c0846ade741482e7d695890efc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 71067,
"upload_time": "2024-10-02T14:04:17",
"upload_time_iso_8601": "2024-10-02T14:04:17.267942Z",
"url": "https://files.pythonhosted.org/packages/7c/a5/5b0d764c8d490be23f47c33a125b05d945c8b293938351b54074ee7bc385/collective.contact.plonegroup-1.51.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-02 14:04:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "collective",
"github_project": "collective.contact.plonegroup",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "collective.contact.plonegroup"
}