collective.contact.plonegroup


Namecollective.contact.plonegroup JSON
Version 1.49 PyPI version JSON
download
home_pagehttps://github.com/collective/collective.contact.plonegroup
SummaryOrganizations and functions combinations to create plone groups
upload_time2024-04-10 06:51:02
maintainerNone
docs_urlNone
authorEcreall, Entrouvert, IMIO
requires_pythonNone
licenseGPL
keywords plone contact management group suffix
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            .. 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.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/e8/f6/a208a855cab1ec743e2bf512e464fa8c1bef353e00d073611898d45d7000/collective.contact.plonegroup-1.49.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.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.49",
    "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": "e8f6a208a855cab1ec743e2bf512e464fa8c1bef353e00d073611898d45d7000",
                "md5": "79a938019d2b6343266055670121a0d6",
                "sha256": "8afd69765f12cd8fa250b76422c0a3f0ddc846726b60ac11b10634339c3fe8b0"
            },
            "downloads": -1,
            "filename": "collective.contact.plonegroup-1.49.tar.gz",
            "has_sig": false,
            "md5_digest": "79a938019d2b6343266055670121a0d6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 70754,
            "upload_time": "2024-04-10T06:51:02",
            "upload_time_iso_8601": "2024-04-10T06:51:02.039798Z",
            "url": "https://files.pythonhosted.org/packages/e8/f6/a208a855cab1ec743e2bf512e464fa8c1bef353e00d073611898d45d7000/collective.contact.plonegroup-1.49.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-10 06:51:02",
    "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"
}
        
Elapsed time: 0.23639s