plone.api


Nameplone.api JSON
Version 2.2.3 PyPI version JSON
download
home_pagehttps://github.com/plone/plone.api
SummaryA Plone API.
upload_time2024-10-23 19:27:41
maintainerNone
docs_urlNone
authorPlone Foundation
requires_python>=3.8
licenseGPL version 2
keywords plone api
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # plone.api

[![Latest PyPI version](https://img.shields.io/pypi/v/plone.api.svg "Latest PyPI version")](https://pypi.python.org/pypi/plone.api/)


[![Number of PyPI downloads](https://img.shields.io/pypi/dm/plone.api.svg "Number of PyPI downloads")](https://pypi.python.org/pypi/plone.api/)

A simple API, built for humans wishing to develop with Plone.

The intention is

* to cover as much as possible the tasks carried out by a Plone developer
* to provide clear API methods for Plone functionality which may be confusing or difficult to access,
* keeping everything in one place,
* staying introspectable and discoverable, important aspects of being Pythonic.


## Documentation

[plone.api documentation](https://6.docs.plone.org/plone.api/index.html) is part of the official Plone documentation.

`plone.api` comes with *cookbook*-like documentation and step-by-step instructions for doing common development tasks in Plone.
Recipes try to assume the user does not have extensive knowledge about Plone internals.


## Source Code and Contribution

[![Testing Status](https://github.com/plone/plone.api/actions/workflows/plone_python.yml/badge.svg "Testing Status")](https://github.com/plone/plone.api/actions/workflows/plone_python.yml)


Contributors
    Please read [Contributing to Plone](https://6.docs.plone.org/contributing/index.html) and [Contributing to `plone.api`](https://6.docs.plone.org/plone.api/contribute/index.html).

Source Code
    at the [Plone code repository hosted at GitHub](https://github.com/plone/plone.api).

Issues
    Please use the [issue tracker](https://github.com/plone/plone.api/issues)

Continuous Integration
    tested on [GitHub Actions](https://github.com/plone/plone.api/actions).

Code Coverage
    is measured at [Coveralls.io](https://coveralls.io/github/plone/plone.api).


Changelog
=========

.. You should *NOT* be adding new change log entries to this file.
   You should create a file in the news directory instead.
   For helpful instructions, please see:
   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst

.. towncrier release notes start

2.2.3 (2024-10-23)
------------------

Documentation:


- Fixed spelling of prerequisites. @stevepiercy (#541)


2.2.2 (2024-07-30)
------------------

Documentation:


- Overhaul contributing documentation for Plone 6. @stevepiercy (#539)
- Use correct syntax for `no-index` in documentation. @stevepiercy (#540)


2.2.1 (2024-06-26)
------------------

Bug fixes:


- Removed `portal_properties` from documentation and tests.
  [maurits] (#125)


2.2.0 (2024-05-06)
------------------

New features:


- Report if a permission does not exist
  when calling `api.user.has_permission`.
  [gforcada] (#515)


Bug fixes:


- In relation.create: Fix edge case where existing RelationList value is None. @davisagli (#535)


Internal:


- Update configuration files.
  [plone devs] (cfffba8c)


2.1.0 (2024-02-22)
------------------

New features:


- Implemented unrestricted find of content types. @gogobd (#312)


Internal:


- Enhanced Makefile paths to address whitespace compatibility issues. @Vivek-04022001 (#530)


2.0.9 (2024-02-12)
------------------

Internal:


- Improved efficiency of view retrieval by deferring availability checks to error handling. @samriddhi99 (#479)


2.0.8 (2023-12-14)
------------------

Bug fixes:


- Fix `api.portal.translate` usage with country-specific language codes [@ericof] (#524)


2.0.7 (2023-11-30)
------------------

Documentation:


- Use the preferred `git switch -c` command. See https://www.infoq.com/news/2019/08/git-2-23-switch-restore/. @stevepiercy (#520)


2.0.6 (2023-11-03)
------------------

Bug fixes:


- More informative error message in plone.api.content.create() [ajung] (#516)


2.0.5 (2023-10-25)
------------------

Bug fixes:


- Replace deprecated assert methods.
  [gforcada] (#1)


Internal:


- Update GHA
  [gforcada] (#1)
- Fixup tests because PloneSite gets IContentish again. @Akshat2Jain @jaroel (#518)


2.0.4 (2023-07-14)
------------------

Bug fixes:


- Do not run GitHub Actions tests twice.
  Only run GitHub Actions tests when committing directly against master or main or
  opening a pull request against master or main. This avoids to run the same test
  suite for the same environment twice.
  [thet] (#0)
- Mockup TinyMCE settings: Remove unused AtD related views.

  Fix a test which was checking for "checkDocument" among other available views.
  "checkDocument" was a TinyMCE endpoint for unmaintained "After the Deadline"
  plugin, which is now removed. (#504)


Documentation:


- Enhance API docs of `portal.translate` to show that the domain is optional in some cases. @thet (#510)


2.0.3 (2023-05-22)
------------------

Bug fixes:


- Create relation only if there is no existing one with same source, target, relationname.
  But mark source as modified. @ksuess (#507)


2.0.2 (2023-04-14)
------------------

Bug fixes:


- Fix deletion of relations by relation name. @ksuess (#501)


Documentation:


- Update link for Training. @stevepiercy (#503)


2.0.1 (2023-01-26)
------------------

Documentation:


- Switch to 6.docs.plone.org (was 6.dev-docs.plone.org)
  [ksuess] (#497)
- Fix links to appropriate versions of docs, in preparation for redirecting docs.plone.org to 6.docs.plone.org. Fix a few typos. Use renamed tox configuration option. [stevepiercy] (#498)
- Pin Sphinx<5,>=3 due to sphinx-book-theme 0.3.3 requirement. [stevepiercy] (#499)
- Update links to docs to use correct versions. [stevepiercy] (#500)


2.0.0 (2022-11-26)
------------------

Bug fixes:


- Require Python 3.8 or higher.  [maurits] (#600)


2.0.0b4 (2022-11-11)
--------------------

Bug fixes:


- Trigger a new deploy of core Plone documentation when plone.api documentation is updated.
  [esteele] (#496)


2.0.0b3 (2022-10-03)
--------------------

Bug fixes:


- Use longer password in tests. [davisagli] (#495)


2.0.0b2 (2022-09-07)
--------------------

Bug fixes:


- Ensure that the security related context managers
  restore the context even if an error occurs. (#374)


2.0.0b1 (2022-06-23)
--------------------

Bug fixes:


- ``mutually_exclusive_parameters`` error message should include only related arguments.
  [martin.peeters] (#489)


2.0.0a4 (2022-06-07)
--------------------

New features:


- Documentation: Add meta data [ksuess, stevepiercy] (#485)


Bug fixes:


- plone.api.content.get should always return a content [ericof] (#487)


2.0.0a3 (2022-05-26)
--------------------

New features:


- Do not require the request parameter to be specified. If not specify fallback to the global request [ale-rt] (#412)
- Integration in new Plone 6 documentation. [ksuess] (#469)
- Preview of documentation per pull request. Netlify bot adds link in PR comments. [ksuess] (#469)
- Documentation is written in MyST markdown. Was restructuredText. [ksuess] (#470)
- Testing code examples in MyST markdown documentation.
  Update documentation [ksuess]
  Add some doctests to module plone.api.relation. [ksuess] (#474)


Bug fixes:


- Clean up docs from review of #469 [stevepiercy] (#476)
- No unicode literals in documentation. [ksuess] (#483)


2.0.0a2 (2021-10-13)
--------------------

Bug fixes:


- Fixed IndexError when calling set_registry_record with wrong value.
  [maurits] (#435)
- Prevent startup error in relation code when ``plone.app.iterate`` is missing.
  [maurits] (#462)


2.0.0a1 (2021-09-01)
--------------------

Breaking changes:


- Drop support for Archetypes and Python 2.
  [pbauer] (#460)


New features:


- There is now a ``plone.api.relation`` module that make it easier to work with relations.
  [pbauer] (#449)


1.11.0 (2021-06-30)
-------------------

New features:


- Drop support for Plone 4.3, 5.0, 5.1, add support for 6.0.
  The code might still work, but it is no longer tested.
  You can use releases in the 1.10 series on the older versions.
  [maurits] (#431)


Bug fixes:


- Add tests to verify that the intids utility is correct after moving content.
  [ale-rt, maurits] (#430)
- Improve tox.ini so that plone.api could be tested locally.
  Add all tests to travis-ci config.
  Add .editorconfig file to plone.api to help enforce coding conventions
  [loechel] (#448)
- Fix plone.api.content.find to respect object_provides "not" queries.
  Fixes: #451
  [thet] (#452)


1.10.4 (2020-09-28)
-------------------

Bug fixes:


- Fixed test failures on Python 3 with Products.MailHost 4.10.
  [maurits] (#3178)


1.10.3 (2020-09-07)
-------------------

Bug fixes:


- Fixed deprecation warning for ``CMFPlone.interfaces.ILanguageSchema``.
  [maurits] (#3130)


1.10.2 (2020-04-20)
-------------------

Bug fixes:


- Minor packaging updates. (#1)


1.10.1 (2020-03-04)
-------------------

Bug fixes:


- Remove deprecation warnings [ale-rt] (#432)
- In tests, use stronger password.
  [maurits] (#436)
- Removed duplicate and failing inline doctest for content.find.
  [maurits] (#437)


1.10.0 (2019-05-01)
-------------------

New features:


- Gracefully handle missing registry records on an interface.
   [gforcada] (#428)


1.9.2 (2019-03-04)
------------------

Bug fixes:


- Fix querying ``object_provides`` for multiple interfaces using 'and'
  operator. [fRiSi] (#426)


1.9.1 (2018-11-20)
------------------

Bug fixes:

- Show only local roles when inherit=False.
  [tschorr]


1.9.0 (2018-09-27)
------------------

New features:

- Python 2/3 support.
  [pbauer]


1.8.5 (2018-09-14)
------------------

Bug fixes:

- Removed allow-hosts from base.cfg, so we can use the new pypi warehouse.
  Refs https://github.com/plone/plone.api/issues/403
  [jaroel]

- fix typos in doc strings
  [tkimnguyen]

- Fix failing AT Collection creation when using api.content.create.
  [gbastien]


1.8.4 (2018-04-24)
------------------

Bug fixes:

- Call ``processForm`` with ``{None: None}`` dict as values.
  This prevents ``processForm`` using ``REQUEST.form`` and overwriting
  values already set by ``invokeFactory``.
  Fixes `issue 99 <https://github.com/plone/plone.api/issues/99>`_.
  [david-batranu]

- Simplification/minor speedup:
  Permissions checks now directly use AccessControl.
  Technical its now exact the same as before.
  Before a tool lookup was needed, calling a utility function, calling AccessControl.
  [jensens]



1.8.3 (2018-02-23)
------------------

Bug fixes:

- Improved code quality according to isort and flake8.  [maurits]

- Fixed regular expression in test for Plone version.  [maurits]


1.8.2 (2018-01-17)
------------------

Bug fixes:

- Fix test in Zope4,
  where ``Products.PlonePAS.tools.memberdata.MemberData`` is an adapter now.
  It can't be proofed to be equal when fetched twice.
  [jensens]

- Change api.group.get_groups to work with CMF master.
  [jaroel]

- Added six to deal with Python 2 / 3 compatibility.
  [rudaporto]

1.8.1 (2017-10-17)
------------------

Bug fixes:

- Don't rename an object when the id already is the target id.
  Fixes `issue 361 <https://github.com/plone/plone.api/issues/361>`_.
  [jaroel]

- Change content.delete to allow both obj=None and objects=[] or objects=None.
  Fixes `issue 383 <https://github.com/plone/plone.api/issues/383>`_.
  [jaroel]

- Let ``zope.i18n`` do the language negotiation for our ``translate`` function.
  Our ``get_current_translation`` does not always give the correct one, especially with combined languages:
  ``nl-be`` (Belgian/Flemish) should fall back to ``nl`` (Dutch).
  The correct negotiated language can also differ per translation domain, which we do not account for.
  ``zope.i18n`` does that better.
  Fixes `issue 379 <https://github.com/plone/plone.api/issues/379>`_.
  [maurits]

- Fix use of Globals.DB which was removed in Zope4 (Fix https://github.com/plone/plone.api/issues/385)
  [pbauer]

1.8 (2017-08-05)
----------------

New features:

- Add method to check if ZODB is in read-only mode.
  [loechel]

- added tox.ini and code convention definitions in setup.py and .editorconfig so that they could be enforced
  [loechel]

Bug fixes:

- Fixes Tests and code convention son this repository.
  [loechel]


1.7 (2017-05-23)
----------------

New features:

- Add disable_roles_acquisition and enable_roles_acquisition to api.content
  [MrTango]

Bug fixes:

- Simplify the ``plone.api.content.delete`` method.
  [thet]

- content.copy with safe_id=False should raise it's own exception. Fixes #340
  [jaroel]


1.6.1 (2017-03-31)
------------------

Bug fixes:

- Simplify delete and transition functions.
  [adamcheasley]

- Do not reassign dynamic roles as local roles when using user.grant_roles().
  Fixes same issue as #351 for groups.
  [pbauer]

- Include local roles granted from being in a group when using "inherit=False"
  in user.get_roles. Fixes #346
  [pbauer]

- Ignore local roles granted on parents when using "inherit=False" in either
  user.get_roles or group.get_roles. Fixes #354
  [pbauer]

- Fix title wrongly set by ``api.content.create`` when called from GS setup
  handler https://github.com/plone/plone.api/issues/99
  [gotcha, pgrunewald]

1.6 (2017-02-15)
----------------

New features:

- Passing inherit=False to groups.get_roles() will only get local roles for the group.
  [pbauer]

Bug fixes:

- Support user.get_roles for anonymous users. Refs #339
  [jaroel]

- Fix imports from Globals that was removed in Zope4
  [pbauer]

- Fix 'bad' quotes.
  [adamcheasley]

- Typo in the documentation.
  [ale-rt]

- Fix error in tests that try to add built-in roles, which no longer fails
  silently in Zope4.
  [MatthewWilkes]

- Do not reassign global roles as local roles when using group.grant_roles()
  [pbauer]

- reST syntax in documentation, follow style-guide, adjust setup.py
  [svx]

- Do not reassign dynamic roles as local roles when using group.grant_roles().
  [pbauer]

1.5.1 (2016-12-06)
------------------

New:

- `api.portal.get_registry_record` supports an optional `default` parameter
  [ale-rt]

Fixes:

- Fix translation related tests to use the ``plonelocales`` domain instead ``passwordresettool``.
  Products.PasswordResetTool was removed in Plone 5.1.
  [thet]

- Allow plone.api.group.get_groups for Anonymous user. Refs #290
  [jaroel]

- Allow adopting to a Special User. Fixes #320 - checking permissions for Anonymous User.
  [jaroel]

- Fix an AttributeError in `api.user.revoke_roles`
  [ale-rt]

- Remove print statements and use @security decorators to make
  code-analysis happy.
  [ale-rt]

- Typo in the documentation.
  [ale-rt]

- Fix travis and coveralls.
  [gforcada]

- Various wording tweaks
  [tkimnguyen]

- In api.content.move if source **and** target are specified and target is already
  source parent, skip the operation.

- Fix test
  [gforcada]

- Fix PRINTINGMAILHOST_ENABLED evaluation to respect Products.PrintingMailHost
  internal logic
  [ale-rt]

1.5 (2016-02-20)
----------------

New:

- Add `portal.translate`
  [ebrehault]

- Add `portal.get_default_language` and `portal.get_current_language`
  [ebrehault]

Fixes:

- Fix ``test_zope_version`` test to be able to deal with development versions of Zope.
  [thet]

- Remove the Plone APIs conventions. They are moved to
  https://5.docs.plone.org/develop/styleguide
  and https://5.docs.plone.org/develop/coredev/docs/git.html
  [thet]

- Cleanup code to match Plone's style guide.
  [gforcada]

- Fix corner case on content.transition code: if a transition only has
  exit transitions and no transition goes back to it ``find_path`` will fail.
  [gforcada]

- Handle automatic transitions on api.content.transition.
  [gforcada]

1.4.11 (2016-01-08)
-------------------

New:

- Allow to set/get registry settings from an interface.
  https://github.com/plone/plone.api/issues/269
  [gforcada]


1.4.10 (2015-11-19)
-------------------

Fixes:

- Rerelease, as 1.4.9 misses the doctests directory.
  [maurits]


1.4.9 (2015-11-19)
------------------

Fixes:

- #283 portal.send_email does not respect transaction aborts
  [jensens]


1.4.8 (2015-10-27)
------------------

New:

- update documentation links, we live in docs.plone.org/develop/plone.api now
  [polyester]

Fixes:

- Fixed Plone 5 version comparison in tests.
  [maurits]


1.4.7 (2015-09-27)
------------------

- Get email_charset value from the configuration registry, falling back
  to portal property if not found.
  [esteele]


1.4.6 (2015-09-14)
------------------

- Fixed `api.content.find` with combination of depth and path.  Path
  is no longer ignored then.
  [maurits]

- Remove unittest2 dependency.
  [gforcada]


1.4.5 (2015-09-09)
------------------

- Fixed long description of package to be valid restructured text,
  displaying nicely on PyPI.
  [maurits]


1.4.4 (2015-09-08)
------------------

- Symlink doctests so that they'll be included in the built egg and don't
  break coredev builds.
  [esteele]


1.4.3 (2015-09-08)
------------------

- Try to get use_email_as_login from registry first.
  [pbauer]


1.4.2 (2015-09-07)
------------------

- Use the version defined in Products.CMFPlone in env.plone_version, just like Plone's control panel.
  Also fixes Jenkins testrunner where we don't have the Plone egg.
  [jaroel]


1.4.1 (2015-09-07)
------------------

- Removed dependency on Products.CMFPlone to avoid circular dependencies. Products.CMFPlone will be there.
  [jaroel]


1.4 (2015-09-04)
----------------

- plone.api.content.delete: add option check_linkintegrity. If True raise
  exception if deleting would result in broken links.
  [pbauer]

- plone.api.content.find: object_provides arguments accepts tuples.
  Fixes #266.
  [ale-rt]

- Fixed plone.api.content.create in Plone 5. Refs 160.
  [jaroel]
- plone.api.content.transition: Now accepts kwargs that can be supplied to the workflow transition.
  [neilferreira]

1.3.3 (2015-07-14)
------------------

- plone.api.content.get_state now allows for an optional default value.
  This is used when no workflow is defined for the object. Refs #246
  [jaroel]

- plone.api.portal.get_registry_record now suggests look-alike records when no records is found. Refs #249.
  [jaroel]

- Fixed tests for Plone 5. Refs #241.
  [jaroel]

- Support Products.PrintingMailHost. Refs #228.
  [jaroel]

- api.plone.org docs point to docs.plone.org/external/plone.api/docs/. Refs #202
  [jaroel]

- plone.api.content.get_view no longer swallows exceptions.
  [jaroel]

- Add plone.api.content.find. Refs #210
  [jaroel]

- Make send_email compatible with Plone >= 5.0b2.
  [pbauer]

- Use the source's parent as a target when no target is specified.
  [jaroel]

- Make Products.Archetypes dependency optional. Fixes #197
  [jaroel]

- Added local TOCS to main docs pages. Fixes #90.
  [jaroel]

- Allow deleting multiple objects. Fixes #198
  [jaroel]

- Fixed `make docs`.
  [jaroel]

- Support Zope users in user.adopt_user. Fixes #171 and #157.
  [jaroel]

- explicit dependencies in setup.py, explicit zcml loading in tests.
  [jensens]

- import getToolByName from origin location
  [jensens]

- overhaul of documentation: semantic linebreaks, few links fixed, minor
  rewording.
  [jensens]

- fix ``revoke_roles`` method: now if is't called with obj parameter,
  it doesn't set inherited roles locally.
  [cekk]

1.3.2 (2014-11-17)
------------------

- fixes #190 - broken ``MANIFEST.in``.
  [jensens]


1.3.1 (2014-11-17)
------------------

- Resolves issues with ``README.rst`` symlink that prevented 1.3.0 from
  being installed. And please never ever in future use symlinks in eggs, ok?
  [jensens]


1.3.0 (2014-11-17)
------------------

- Fixes #184 NameChooser on rename used the wrong way and fails on
  safe_id=True.
  [benniboy]

- Clarified documentation for content.copy, refs #185.
  [benniboy]

- Fixes if a content is copied in the same folder or in a target folder, where
  same source id exists, the existing source(same folder) or third object
  (same id as source) gets renamed instead of the target.
  [benniboy]

- Use getUserById to find the user when given a User object in adopt_user.
  [tschanzt]

- Made ``api.portal.get_localized_time`` also work with datetime.date.
  [nightmarebadger]

- Raise better/expected errors in ``api.user.grant_roles`` and
  ``api.user.revoke_roles``.
  [adamcheasley]

- Add ``api.user.has_permission`` ref #172.
  [adamcheasley]


1.2.1 (2014-06-24)
------------------

- Resolve issues with CHANGES.rst symlink that prevented 1.2.0 from
  being installed in some circumstances.
  [mattss]


1.2.0 (2014-06-24)
------------------

- Enhance ``api.content.transition`` with the ability to transition from the
  current state to a given state without knowing the transition 'path'
  refs. #162
  [adamcheasley]

- Add ``api.env.plone_version()`` and ``api.env.zope_version()``, refs #126.
  [hvelarde]

- Stop UnicodeDecodeErrors being swallowed in ``api.content.create``.
  [mattss]

- Catch AttributeError in ``api.content.get`` (raised if only part of the
  traversal path exists).
  [mattss]


1.1.0 (2013-10-12)
------------------

- List supported Plone versions in setup.py.
  [zupo]

- Plone 4.0 and 4.1 are now tested under Python 2.6 on CI.
  [hvelarde]

- Use Plone 4.3 on development by default (was 4.2).
  [hvelarde]


1.1.0-rc.1 (2013-10-10)
-----------------------

- Fix README.rst so it renders correctly on PyPI.
  [zupo]

- Use api.plone.org/foo redirects.
  [zupo]

- Add MANIFEST.in file.
  [hvelarde]


1.0.0-rc.3 (2013-10-09)
-----------------------

- Packaging issues.
  [zupo]


1.0.0-rc.2 (2013-10-09)
-----------------------

- Proof-read the docs, improved grammar and wording.
  [cewing]

- Add plone.recipe.codeanalysis to our buildout.
  [flohcim]

- Make all assertRaise() calls use the `with` keyword.
  [winstonf88]

- Amend user.get method to accept a userid parameter, refs #112.
  [cewing, xiru, winstonf88]

  .. note::
    This change fixes a bug in the earlier implementation that could cause
    errors in some situations. This situation will only arise if the userid and
    username for a user are not the same. If membrane is being used for content-
    based user objects, or if email-as-login is enabled *and* a user has changed
    their email address this will be the case. In the previous implementation
    the username parameter was implicitly being treated as userid. The new
    implementation does not do so. If consumer code is relying on this bug and
    passing userid, and if that code uses the username parameter as a keyword
    parameter, then lookup will fail. In all other cases, there should be no
    difference.

- Add api.env.debug_mode() and api.env.test_mode(), refs #125.
  [sdelcourt]

- Move most of text from docs/index.rst to README.rst so its also visible on
  PyPI and GitHub.
  [zupo]

- Deprecate plone.api on ReadTheDocs and redirect to api.plone.org, refs #130.
  [wormj, zupo]

- Add a new `make coverage` command and add support for posting coverage to
  Coveralls.io.
  [zupo]

- Make api.content.create() also print out the underlying error, refs #118.
  [winston88]

- Fix api.content copy/move/rename functions to return the object after they
  change content, refs #115.
  [rodfersou]

- Make Travis IRC notification message to be one-line instead of three-lines.
  [zupo]

- More examples of good and bad code blocks in documentation, more information
  on how to write good docstrings.
  [zupo]

- Prefer single quotes over double quotes in code style.
  [zupo]

- New bootstrap.py to stay in the land of zc.buildout 1.x.
  [zupo]

- Package now includes a copy of the GPLv2 license as stated in the GNU
  General Public License documentation.
  [hvelarde]

- Fixed copying folderish objects.
  [pingviini]

- Fixed moving folderish objects.
  [pingviini]


1.0.0-rc.1 (2013-01-27)
-----------------------

- Increase test coverage.
  [cillianderoiste, JessN, reinhardt, zupo]

- Implementation of ``api.env.adopt_roles()`` context manager for
  temporarily switching roles inside a block.
  [RichyB]

- Created ``api.env`` module for interacting with global environment.
  [RichyB]

- Decorators for defining constraints on api methods. Depend on `decorator`
  package.
  [JessN]

- Resolved #61: Improve api.portal.get().
  [cillianderoiste]

- Use plone.api methods in plone.api codebase.
  [zupo]

- Switch to `flake8` instead of `pep8`+`pyflakes`.
  [zupo]

- Get the portal path with absolute_url_path.
  [cillianderoiste]

- Travis build speed-ups.
  [zupo]

- Support for Python 2.6.
  [RichyB, zupo]

- Support for Plone 4.0.
  [adamcheasley]

- Support for Plone 4.3.
  [cillianderoiste, zupo]

- Spelling fixes.
  [adamtheturtle]

- Make get_view and get_tool tests not have hardcoded list of *all* expected
  values.
  [RichyB, cillianderoiste]

- Code Style Guide.
  [iElectric, cillianderoiste, marciomazza, RichyB, thet, zupo]

- Depend on ``manuel`` in setup.py.
  [zupo]

- Documentation how to get/set member properties.
  [zupo]

- Improvements to ``get_registry_record``.
  [zupo]


0.1b1 (2012-10-23)
------------------

- Contributors guide and style guide.
  [zupo]

- Enforce PEP257 for docstrings.
  [zupo]

- Fix ``get_navigation_root()`` to return object instead of path.
  [pbauer]

- Implementation of ``get_permissions()``, ``get_roles()``,
  ``grant_roles()`` and ``revoke roles()`` for users and groups.
  [rudaporto, xiru]

- Implementation of ``get_registry_record`` and ``set_registry_record``.
  [pbauer]

- Use `Makefile` to build the project, run tests, generate documentation, etc.
  [witsch]

- Moving all ReadTheDocs dependencies into ``rtd_requirements.txt``.
  [zupo]


0.1a2 (2012-09-03)
------------------

- Updated release, adding new features, test coverage, cleanup & refactor.
  [hvelarde, avelino, ericof, jpgimenez, xiru, macagua, zupo]


0.1a1 (2012-07-13)
------------------

- Initial release.
  [davisagli, fulv, iElectric, jcerjak, jonstahl, kcleong, mauritsvanrees,
  wamdam, witsch, zupo]

License
=======

Copyright (C) 2012-2013 Plone Foundation

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/plone.api",
    "name": "plone.api",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "plone api",
    "author": "Plone Foundation",
    "author_email": "plone-developers@lists.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/d6/a3/79661197931b81cfaf6baabeec91982068e49e0404813a226e39337d2361/plone_api-2.2.3.tar.gz",
    "platform": "Any",
    "description": "# plone.api\n\n[![Latest PyPI version](https://img.shields.io/pypi/v/plone.api.svg \"Latest PyPI version\")](https://pypi.python.org/pypi/plone.api/)\n\n\n[![Number of PyPI downloads](https://img.shields.io/pypi/dm/plone.api.svg \"Number of PyPI downloads\")](https://pypi.python.org/pypi/plone.api/)\n\nA simple API, built for humans wishing to develop with Plone.\n\nThe intention is\n\n* to cover as much as possible the tasks carried out by a Plone developer\n* to provide clear API methods for Plone functionality which may be confusing or difficult to access,\n* keeping everything in one place,\n* staying introspectable and discoverable, important aspects of being Pythonic.\n\n\n## Documentation\n\n[plone.api documentation](https://6.docs.plone.org/plone.api/index.html) is part of the official Plone documentation.\n\n`plone.api` comes with *cookbook*-like documentation and step-by-step instructions for doing common development tasks in Plone.\nRecipes try to assume the user does not have extensive knowledge about Plone internals.\n\n\n## Source Code and Contribution\n\n[![Testing Status](https://github.com/plone/plone.api/actions/workflows/plone_python.yml/badge.svg \"Testing Status\")](https://github.com/plone/plone.api/actions/workflows/plone_python.yml)\n\n\nContributors\n    Please read [Contributing to Plone](https://6.docs.plone.org/contributing/index.html) and [Contributing to `plone.api`](https://6.docs.plone.org/plone.api/contribute/index.html).\n\nSource Code\n    at the [Plone code repository hosted at GitHub](https://github.com/plone/plone.api).\n\nIssues\n    Please use the [issue tracker](https://github.com/plone/plone.api/issues)\n\nContinuous Integration\n    tested on [GitHub Actions](https://github.com/plone/plone.api/actions).\n\nCode Coverage\n    is measured at [Coveralls.io](https://coveralls.io/github/plone/plone.api).\n\n\nChangelog\n=========\n\n.. You should *NOT* be adding new change log entries to this file.\n   You should create a file in the news directory instead.\n   For helpful instructions, please see:\n   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n\n.. towncrier release notes start\n\n2.2.3 (2024-10-23)\n------------------\n\nDocumentation:\n\n\n- Fixed spelling of prerequisites. @stevepiercy (#541)\n\n\n2.2.2 (2024-07-30)\n------------------\n\nDocumentation:\n\n\n- Overhaul contributing documentation for Plone 6. @stevepiercy (#539)\n- Use correct syntax for `no-index` in documentation. @stevepiercy (#540)\n\n\n2.2.1 (2024-06-26)\n------------------\n\nBug fixes:\n\n\n- Removed `portal_properties` from documentation and tests.\n  [maurits] (#125)\n\n\n2.2.0 (2024-05-06)\n------------------\n\nNew features:\n\n\n- Report if a permission does not exist\n  when calling `api.user.has_permission`.\n  [gforcada] (#515)\n\n\nBug fixes:\n\n\n- In relation.create: Fix edge case where existing RelationList value is None. @davisagli (#535)\n\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (cfffba8c)\n\n\n2.1.0 (2024-02-22)\n------------------\n\nNew features:\n\n\n- Implemented unrestricted find of content types. @gogobd (#312)\n\n\nInternal:\n\n\n- Enhanced Makefile paths to address whitespace compatibility issues. @Vivek-04022001 (#530)\n\n\n2.0.9 (2024-02-12)\n------------------\n\nInternal:\n\n\n- Improved efficiency of view retrieval by deferring availability checks to error handling. @samriddhi99 (#479)\n\n\n2.0.8 (2023-12-14)\n------------------\n\nBug fixes:\n\n\n- Fix `api.portal.translate` usage with country-specific language codes [@ericof] (#524)\n\n\n2.0.7 (2023-11-30)\n------------------\n\nDocumentation:\n\n\n- Use the preferred `git switch -c` command. See https://www.infoq.com/news/2019/08/git-2-23-switch-restore/. @stevepiercy (#520)\n\n\n2.0.6 (2023-11-03)\n------------------\n\nBug fixes:\n\n\n- More informative error message in plone.api.content.create() [ajung] (#516)\n\n\n2.0.5 (2023-10-25)\n------------------\n\nBug fixes:\n\n\n- Replace deprecated assert methods.\n  [gforcada] (#1)\n\n\nInternal:\n\n\n- Update GHA\n  [gforcada] (#1)\n- Fixup tests because PloneSite gets IContentish again. @Akshat2Jain @jaroel (#518)\n\n\n2.0.4 (2023-07-14)\n------------------\n\nBug fixes:\n\n\n- Do not run GitHub Actions tests twice.\n  Only run GitHub Actions tests when committing directly against master or main or\n  opening a pull request against master or main. This avoids to run the same test\n  suite for the same environment twice.\n  [thet] (#0)\n- Mockup TinyMCE settings: Remove unused AtD related views.\n\n  Fix a test which was checking for \"checkDocument\" among other available views.\n  \"checkDocument\" was a TinyMCE endpoint for unmaintained \"After the Deadline\"\n  plugin, which is now removed. (#504)\n\n\nDocumentation:\n\n\n- Enhance API docs of `portal.translate` to show that the domain is optional in some cases. @thet (#510)\n\n\n2.0.3 (2023-05-22)\n------------------\n\nBug fixes:\n\n\n- Create relation only if there is no existing one with same source, target, relationname.\n  But mark source as modified. @ksuess (#507)\n\n\n2.0.2 (2023-04-14)\n------------------\n\nBug fixes:\n\n\n- Fix deletion of relations by relation name. @ksuess (#501)\n\n\nDocumentation:\n\n\n- Update link for Training. @stevepiercy (#503)\n\n\n2.0.1 (2023-01-26)\n------------------\n\nDocumentation:\n\n\n- Switch to 6.docs.plone.org (was 6.dev-docs.plone.org)\n  [ksuess] (#497)\n- Fix links to appropriate versions of docs, in preparation for redirecting docs.plone.org to 6.docs.plone.org. Fix a few typos. Use renamed tox configuration option. [stevepiercy] (#498)\n- Pin Sphinx<5,>=3 due to sphinx-book-theme 0.3.3 requirement. [stevepiercy] (#499)\n- Update links to docs to use correct versions. [stevepiercy] (#500)\n\n\n2.0.0 (2022-11-26)\n------------------\n\nBug fixes:\n\n\n- Require Python 3.8 or higher.  [maurits] (#600)\n\n\n2.0.0b4 (2022-11-11)\n--------------------\n\nBug fixes:\n\n\n- Trigger a new deploy of core Plone documentation when plone.api documentation is updated.\n  [esteele] (#496)\n\n\n2.0.0b3 (2022-10-03)\n--------------------\n\nBug fixes:\n\n\n- Use longer password in tests. [davisagli] (#495)\n\n\n2.0.0b2 (2022-09-07)\n--------------------\n\nBug fixes:\n\n\n- Ensure that the security related context managers\n  restore the context even if an error occurs. (#374)\n\n\n2.0.0b1 (2022-06-23)\n--------------------\n\nBug fixes:\n\n\n- ``mutually_exclusive_parameters`` error message should include only related arguments.\n  [martin.peeters] (#489)\n\n\n2.0.0a4 (2022-06-07)\n--------------------\n\nNew features:\n\n\n- Documentation: Add meta data [ksuess, stevepiercy] (#485)\n\n\nBug fixes:\n\n\n- plone.api.content.get should always return a content [ericof] (#487)\n\n\n2.0.0a3 (2022-05-26)\n--------------------\n\nNew features:\n\n\n- Do not require the request parameter to be specified. If not specify fallback to the global request [ale-rt] (#412)\n- Integration in new Plone 6 documentation. [ksuess] (#469)\n- Preview of documentation per pull request. Netlify bot adds link in PR comments. [ksuess] (#469)\n- Documentation is written in MyST markdown. Was restructuredText. [ksuess] (#470)\n- Testing code examples in MyST markdown documentation.\n  Update documentation [ksuess]\n  Add some doctests to module plone.api.relation. [ksuess] (#474)\n\n\nBug fixes:\n\n\n- Clean up docs from review of #469 [stevepiercy] (#476)\n- No unicode literals in documentation. [ksuess] (#483)\n\n\n2.0.0a2 (2021-10-13)\n--------------------\n\nBug fixes:\n\n\n- Fixed IndexError when calling set_registry_record with wrong value.\n  [maurits] (#435)\n- Prevent startup error in relation code when ``plone.app.iterate`` is missing.\n  [maurits] (#462)\n\n\n2.0.0a1 (2021-09-01)\n--------------------\n\nBreaking changes:\n\n\n- Drop support for Archetypes and Python 2.\n  [pbauer] (#460)\n\n\nNew features:\n\n\n- There is now a ``plone.api.relation`` module that make it easier to work with relations.\n  [pbauer] (#449)\n\n\n1.11.0 (2021-06-30)\n-------------------\n\nNew features:\n\n\n- Drop support for Plone 4.3, 5.0, 5.1, add support for 6.0.\n  The code might still work, but it is no longer tested.\n  You can use releases in the 1.10 series on the older versions.\n  [maurits] (#431)\n\n\nBug fixes:\n\n\n- Add tests to verify that the intids utility is correct after moving content.\n  [ale-rt, maurits] (#430)\n- Improve tox.ini so that plone.api could be tested locally.\n  Add all tests to travis-ci config.\n  Add .editorconfig file to plone.api to help enforce coding conventions\n  [loechel] (#448)\n- Fix plone.api.content.find to respect object_provides \"not\" queries.\n  Fixes: #451\n  [thet] (#452)\n\n\n1.10.4 (2020-09-28)\n-------------------\n\nBug fixes:\n\n\n- Fixed test failures on Python 3 with Products.MailHost 4.10.\n  [maurits] (#3178)\n\n\n1.10.3 (2020-09-07)\n-------------------\n\nBug fixes:\n\n\n- Fixed deprecation warning for ``CMFPlone.interfaces.ILanguageSchema``.\n  [maurits] (#3130)\n\n\n1.10.2 (2020-04-20)\n-------------------\n\nBug fixes:\n\n\n- Minor packaging updates. (#1)\n\n\n1.10.1 (2020-03-04)\n-------------------\n\nBug fixes:\n\n\n- Remove deprecation warnings [ale-rt] (#432)\n- In tests, use stronger password.\n  [maurits] (#436)\n- Removed duplicate and failing inline doctest for content.find.\n  [maurits] (#437)\n\n\n1.10.0 (2019-05-01)\n-------------------\n\nNew features:\n\n\n- Gracefully handle missing registry records on an interface.\n   [gforcada] (#428)\n\n\n1.9.2 (2019-03-04)\n------------------\n\nBug fixes:\n\n\n- Fix querying ``object_provides`` for multiple interfaces using 'and'\n  operator. [fRiSi] (#426)\n\n\n1.9.1 (2018-11-20)\n------------------\n\nBug fixes:\n\n- Show only local roles when inherit=False.\n  [tschorr]\n\n\n1.9.0 (2018-09-27)\n------------------\n\nNew features:\n\n- Python 2/3 support.\n  [pbauer]\n\n\n1.8.5 (2018-09-14)\n------------------\n\nBug fixes:\n\n- Removed allow-hosts from base.cfg, so we can use the new pypi warehouse.\n  Refs https://github.com/plone/plone.api/issues/403\n  [jaroel]\n\n- fix typos in doc strings\n  [tkimnguyen]\n\n- Fix failing AT Collection creation when using api.content.create.\n  [gbastien]\n\n\n1.8.4 (2018-04-24)\n------------------\n\nBug fixes:\n\n- Call ``processForm`` with ``{None: None}`` dict as values.\n  This prevents ``processForm`` using ``REQUEST.form`` and overwriting\n  values already set by ``invokeFactory``.\n  Fixes `issue 99 <https://github.com/plone/plone.api/issues/99>`_.\n  [david-batranu]\n\n- Simplification/minor speedup:\n  Permissions checks now directly use AccessControl.\n  Technical its now exact the same as before.\n  Before a tool lookup was needed, calling a utility function, calling AccessControl.\n  [jensens]\n\n\n\n1.8.3 (2018-02-23)\n------------------\n\nBug fixes:\n\n- Improved code quality according to isort and flake8.  [maurits]\n\n- Fixed regular expression in test for Plone version.  [maurits]\n\n\n1.8.2 (2018-01-17)\n------------------\n\nBug fixes:\n\n- Fix test in Zope4,\n  where ``Products.PlonePAS.tools.memberdata.MemberData`` is an adapter now.\n  It can't be proofed to be equal when fetched twice.\n  [jensens]\n\n- Change api.group.get_groups to work with CMF master.\n  [jaroel]\n\n- Added six to deal with Python 2 / 3 compatibility.\n  [rudaporto]\n\n1.8.1 (2017-10-17)\n------------------\n\nBug fixes:\n\n- Don't rename an object when the id already is the target id.\n  Fixes `issue 361 <https://github.com/plone/plone.api/issues/361>`_.\n  [jaroel]\n\n- Change content.delete to allow both obj=None and objects=[] or objects=None.\n  Fixes `issue 383 <https://github.com/plone/plone.api/issues/383>`_.\n  [jaroel]\n\n- Let ``zope.i18n`` do the language negotiation for our ``translate`` function.\n  Our ``get_current_translation`` does not always give the correct one, especially with combined languages:\n  ``nl-be`` (Belgian/Flemish) should fall back to ``nl`` (Dutch).\n  The correct negotiated language can also differ per translation domain, which we do not account for.\n  ``zope.i18n`` does that better.\n  Fixes `issue 379 <https://github.com/plone/plone.api/issues/379>`_.\n  [maurits]\n\n- Fix use of Globals.DB which was removed in Zope4 (Fix https://github.com/plone/plone.api/issues/385)\n  [pbauer]\n\n1.8 (2017-08-05)\n----------------\n\nNew features:\n\n- Add method to check if ZODB is in read-only mode.\n  [loechel]\n\n- added tox.ini and code convention definitions in setup.py and .editorconfig so that they could be enforced\n  [loechel]\n\nBug fixes:\n\n- Fixes Tests and code convention son this repository.\n  [loechel]\n\n\n1.7 (2017-05-23)\n----------------\n\nNew features:\n\n- Add disable_roles_acquisition and enable_roles_acquisition to api.content\n  [MrTango]\n\nBug fixes:\n\n- Simplify the ``plone.api.content.delete`` method.\n  [thet]\n\n- content.copy with safe_id=False should raise it's own exception. Fixes #340\n  [jaroel]\n\n\n1.6.1 (2017-03-31)\n------------------\n\nBug fixes:\n\n- Simplify delete and transition functions.\n  [adamcheasley]\n\n- Do not reassign dynamic roles as local roles when using user.grant_roles().\n  Fixes same issue as #351 for groups.\n  [pbauer]\n\n- Include local roles granted from being in a group when using \"inherit=False\"\n  in user.get_roles. Fixes #346\n  [pbauer]\n\n- Ignore local roles granted on parents when using \"inherit=False\" in either\n  user.get_roles or group.get_roles. Fixes #354\n  [pbauer]\n\n- Fix title wrongly set by ``api.content.create`` when called from GS setup\n  handler https://github.com/plone/plone.api/issues/99\n  [gotcha, pgrunewald]\n\n1.6 (2017-02-15)\n----------------\n\nNew features:\n\n- Passing inherit=False to groups.get_roles() will only get local roles for the group.\n  [pbauer]\n\nBug fixes:\n\n- Support user.get_roles for anonymous users. Refs #339\n  [jaroel]\n\n- Fix imports from Globals that was removed in Zope4\n  [pbauer]\n\n- Fix 'bad' quotes.\n  [adamcheasley]\n\n- Typo in the documentation.\n  [ale-rt]\n\n- Fix error in tests that try to add built-in roles, which no longer fails\n  silently in Zope4.\n  [MatthewWilkes]\n\n- Do not reassign global roles as local roles when using group.grant_roles()\n  [pbauer]\n\n- reST syntax in documentation, follow style-guide, adjust setup.py\n  [svx]\n\n- Do not reassign dynamic roles as local roles when using group.grant_roles().\n  [pbauer]\n\n1.5.1 (2016-12-06)\n------------------\n\nNew:\n\n- `api.portal.get_registry_record` supports an optional `default` parameter\n  [ale-rt]\n\nFixes:\n\n- Fix translation related tests to use the ``plonelocales`` domain instead ``passwordresettool``.\n  Products.PasswordResetTool was removed in Plone 5.1.\n  [thet]\n\n- Allow plone.api.group.get_groups for Anonymous user. Refs #290\n  [jaroel]\n\n- Allow adopting to a Special User. Fixes #320 - checking permissions for Anonymous User.\n  [jaroel]\n\n- Fix an AttributeError in `api.user.revoke_roles`\n  [ale-rt]\n\n- Remove print statements and use @security decorators to make\n  code-analysis happy.\n  [ale-rt]\n\n- Typo in the documentation.\n  [ale-rt]\n\n- Fix travis and coveralls.\n  [gforcada]\n\n- Various wording tweaks\n  [tkimnguyen]\n\n- In api.content.move if source **and** target are specified and target is already\n  source parent, skip the operation.\n\n- Fix test\n  [gforcada]\n\n- Fix PRINTINGMAILHOST_ENABLED evaluation to respect Products.PrintingMailHost\n  internal logic\n  [ale-rt]\n\n1.5 (2016-02-20)\n----------------\n\nNew:\n\n- Add `portal.translate`\n  [ebrehault]\n\n- Add `portal.get_default_language` and `portal.get_current_language`\n  [ebrehault]\n\nFixes:\n\n- Fix ``test_zope_version`` test to be able to deal with development versions of Zope.\n  [thet]\n\n- Remove the Plone APIs conventions. They are moved to\n  https://5.docs.plone.org/develop/styleguide\n  and https://5.docs.plone.org/develop/coredev/docs/git.html\n  [thet]\n\n- Cleanup code to match Plone's style guide.\n  [gforcada]\n\n- Fix corner case on content.transition code: if a transition only has\n  exit transitions and no transition goes back to it ``find_path`` will fail.\n  [gforcada]\n\n- Handle automatic transitions on api.content.transition.\n  [gforcada]\n\n1.4.11 (2016-01-08)\n-------------------\n\nNew:\n\n- Allow to set/get registry settings from an interface.\n  https://github.com/plone/plone.api/issues/269\n  [gforcada]\n\n\n1.4.10 (2015-11-19)\n-------------------\n\nFixes:\n\n- Rerelease, as 1.4.9 misses the doctests directory.\n  [maurits]\n\n\n1.4.9 (2015-11-19)\n------------------\n\nFixes:\n\n- #283 portal.send_email does not respect transaction aborts\n  [jensens]\n\n\n1.4.8 (2015-10-27)\n------------------\n\nNew:\n\n- update documentation links, we live in docs.plone.org/develop/plone.api now\n  [polyester]\n\nFixes:\n\n- Fixed Plone 5 version comparison in tests.\n  [maurits]\n\n\n1.4.7 (2015-09-27)\n------------------\n\n- Get email_charset value from the configuration registry, falling back\n  to portal property if not found.\n  [esteele]\n\n\n1.4.6 (2015-09-14)\n------------------\n\n- Fixed `api.content.find` with combination of depth and path.  Path\n  is no longer ignored then.\n  [maurits]\n\n- Remove unittest2 dependency.\n  [gforcada]\n\n\n1.4.5 (2015-09-09)\n------------------\n\n- Fixed long description of package to be valid restructured text,\n  displaying nicely on PyPI.\n  [maurits]\n\n\n1.4.4 (2015-09-08)\n------------------\n\n- Symlink doctests so that they'll be included in the built egg and don't\n  break coredev builds.\n  [esteele]\n\n\n1.4.3 (2015-09-08)\n------------------\n\n- Try to get use_email_as_login from registry first.\n  [pbauer]\n\n\n1.4.2 (2015-09-07)\n------------------\n\n- Use the version defined in Products.CMFPlone in env.plone_version, just like Plone's control panel.\n  Also fixes Jenkins testrunner where we don't have the Plone egg.\n  [jaroel]\n\n\n1.4.1 (2015-09-07)\n------------------\n\n- Removed dependency on Products.CMFPlone to avoid circular dependencies. Products.CMFPlone will be there.\n  [jaroel]\n\n\n1.4 (2015-09-04)\n----------------\n\n- plone.api.content.delete: add option check_linkintegrity. If True raise\n  exception if deleting would result in broken links.\n  [pbauer]\n\n- plone.api.content.find: object_provides arguments accepts tuples.\n  Fixes #266.\n  [ale-rt]\n\n- Fixed plone.api.content.create in Plone 5. Refs 160.\n  [jaroel]\n- plone.api.content.transition: Now accepts kwargs that can be supplied to the workflow transition.\n  [neilferreira]\n\n1.3.3 (2015-07-14)\n------------------\n\n- plone.api.content.get_state now allows for an optional default value.\n  This is used when no workflow is defined for the object. Refs #246\n  [jaroel]\n\n- plone.api.portal.get_registry_record now suggests look-alike records when no records is found. Refs #249.\n  [jaroel]\n\n- Fixed tests for Plone 5. Refs #241.\n  [jaroel]\n\n- Support Products.PrintingMailHost. Refs #228.\n  [jaroel]\n\n- api.plone.org docs point to docs.plone.org/external/plone.api/docs/. Refs #202\n  [jaroel]\n\n- plone.api.content.get_view no longer swallows exceptions.\n  [jaroel]\n\n- Add plone.api.content.find. Refs #210\n  [jaroel]\n\n- Make send_email compatible with Plone >= 5.0b2.\n  [pbauer]\n\n- Use the source's parent as a target when no target is specified.\n  [jaroel]\n\n- Make Products.Archetypes dependency optional. Fixes #197\n  [jaroel]\n\n- Added local TOCS to main docs pages. Fixes #90.\n  [jaroel]\n\n- Allow deleting multiple objects. Fixes #198\n  [jaroel]\n\n- Fixed `make docs`.\n  [jaroel]\n\n- Support Zope users in user.adopt_user. Fixes #171 and #157.\n  [jaroel]\n\n- explicit dependencies in setup.py, explicit zcml loading in tests.\n  [jensens]\n\n- import getToolByName from origin location\n  [jensens]\n\n- overhaul of documentation: semantic linebreaks, few links fixed, minor\n  rewording.\n  [jensens]\n\n- fix ``revoke_roles`` method: now if is't called with obj parameter,\n  it doesn't set inherited roles locally.\n  [cekk]\n\n1.3.2 (2014-11-17)\n------------------\n\n- fixes #190 - broken ``MANIFEST.in``.\n  [jensens]\n\n\n1.3.1 (2014-11-17)\n------------------\n\n- Resolves issues with ``README.rst`` symlink that prevented 1.3.0 from\n  being installed. And please never ever in future use symlinks in eggs, ok?\n  [jensens]\n\n\n1.3.0 (2014-11-17)\n------------------\n\n- Fixes #184 NameChooser on rename used the wrong way and fails on\n  safe_id=True.\n  [benniboy]\n\n- Clarified documentation for content.copy, refs #185.\n  [benniboy]\n\n- Fixes if a content is copied in the same folder or in a target folder, where\n  same source id exists, the existing source(same folder) or third object\n  (same id as source) gets renamed instead of the target.\n  [benniboy]\n\n- Use getUserById to find the user when given a User object in adopt_user.\n  [tschanzt]\n\n- Made ``api.portal.get_localized_time`` also work with datetime.date.\n  [nightmarebadger]\n\n- Raise better/expected errors in ``api.user.grant_roles`` and\n  ``api.user.revoke_roles``.\n  [adamcheasley]\n\n- Add ``api.user.has_permission`` ref #172.\n  [adamcheasley]\n\n\n1.2.1 (2014-06-24)\n------------------\n\n- Resolve issues with CHANGES.rst symlink that prevented 1.2.0 from\n  being installed in some circumstances.\n  [mattss]\n\n\n1.2.0 (2014-06-24)\n------------------\n\n- Enhance ``api.content.transition`` with the ability to transition from the\n  current state to a given state without knowing the transition 'path'\n  refs. #162\n  [adamcheasley]\n\n- Add ``api.env.plone_version()`` and ``api.env.zope_version()``, refs #126.\n  [hvelarde]\n\n- Stop UnicodeDecodeErrors being swallowed in ``api.content.create``.\n  [mattss]\n\n- Catch AttributeError in ``api.content.get`` (raised if only part of the\n  traversal path exists).\n  [mattss]\n\n\n1.1.0 (2013-10-12)\n------------------\n\n- List supported Plone versions in setup.py.\n  [zupo]\n\n- Plone 4.0 and 4.1 are now tested under Python 2.6 on CI.\n  [hvelarde]\n\n- Use Plone 4.3 on development by default (was 4.2).\n  [hvelarde]\n\n\n1.1.0-rc.1 (2013-10-10)\n-----------------------\n\n- Fix README.rst so it renders correctly on PyPI.\n  [zupo]\n\n- Use api.plone.org/foo redirects.\n  [zupo]\n\n- Add MANIFEST.in file.\n  [hvelarde]\n\n\n1.0.0-rc.3 (2013-10-09)\n-----------------------\n\n- Packaging issues.\n  [zupo]\n\n\n1.0.0-rc.2 (2013-10-09)\n-----------------------\n\n- Proof-read the docs, improved grammar and wording.\n  [cewing]\n\n- Add plone.recipe.codeanalysis to our buildout.\n  [flohcim]\n\n- Make all assertRaise() calls use the `with` keyword.\n  [winstonf88]\n\n- Amend user.get method to accept a userid parameter, refs #112.\n  [cewing, xiru, winstonf88]\n\n  .. note::\n    This change fixes a bug in the earlier implementation that could cause\n    errors in some situations. This situation will only arise if the userid and\n    username for a user are not the same. If membrane is being used for content-\n    based user objects, or if email-as-login is enabled *and* a user has changed\n    their email address this will be the case. In the previous implementation\n    the username parameter was implicitly being treated as userid. The new\n    implementation does not do so. If consumer code is relying on this bug and\n    passing userid, and if that code uses the username parameter as a keyword\n    parameter, then lookup will fail. In all other cases, there should be no\n    difference.\n\n- Add api.env.debug_mode() and api.env.test_mode(), refs #125.\n  [sdelcourt]\n\n- Move most of text from docs/index.rst to README.rst so its also visible on\n  PyPI and GitHub.\n  [zupo]\n\n- Deprecate plone.api on ReadTheDocs and redirect to api.plone.org, refs #130.\n  [wormj, zupo]\n\n- Add a new `make coverage` command and add support for posting coverage to\n  Coveralls.io.\n  [zupo]\n\n- Make api.content.create() also print out the underlying error, refs #118.\n  [winston88]\n\n- Fix api.content copy/move/rename functions to return the object after they\n  change content, refs #115.\n  [rodfersou]\n\n- Make Travis IRC notification message to be one-line instead of three-lines.\n  [zupo]\n\n- More examples of good and bad code blocks in documentation, more information\n  on how to write good docstrings.\n  [zupo]\n\n- Prefer single quotes over double quotes in code style.\n  [zupo]\n\n- New bootstrap.py to stay in the land of zc.buildout 1.x.\n  [zupo]\n\n- Package now includes a copy of the GPLv2 license as stated in the GNU\n  General Public License documentation.\n  [hvelarde]\n\n- Fixed copying folderish objects.\n  [pingviini]\n\n- Fixed moving folderish objects.\n  [pingviini]\n\n\n1.0.0-rc.1 (2013-01-27)\n-----------------------\n\n- Increase test coverage.\n  [cillianderoiste, JessN, reinhardt, zupo]\n\n- Implementation of ``api.env.adopt_roles()`` context manager for\n  temporarily switching roles inside a block.\n  [RichyB]\n\n- Created ``api.env`` module for interacting with global environment.\n  [RichyB]\n\n- Decorators for defining constraints on api methods. Depend on `decorator`\n  package.\n  [JessN]\n\n- Resolved #61: Improve api.portal.get().\n  [cillianderoiste]\n\n- Use plone.api methods in plone.api codebase.\n  [zupo]\n\n- Switch to `flake8` instead of `pep8`+`pyflakes`.\n  [zupo]\n\n- Get the portal path with absolute_url_path.\n  [cillianderoiste]\n\n- Travis build speed-ups.\n  [zupo]\n\n- Support for Python 2.6.\n  [RichyB, zupo]\n\n- Support for Plone 4.0.\n  [adamcheasley]\n\n- Support for Plone 4.3.\n  [cillianderoiste, zupo]\n\n- Spelling fixes.\n  [adamtheturtle]\n\n- Make get_view and get_tool tests not have hardcoded list of *all* expected\n  values.\n  [RichyB, cillianderoiste]\n\n- Code Style Guide.\n  [iElectric, cillianderoiste, marciomazza, RichyB, thet, zupo]\n\n- Depend on ``manuel`` in setup.py.\n  [zupo]\n\n- Documentation how to get/set member properties.\n  [zupo]\n\n- Improvements to ``get_registry_record``.\n  [zupo]\n\n\n0.1b1 (2012-10-23)\n------------------\n\n- Contributors guide and style guide.\n  [zupo]\n\n- Enforce PEP257 for docstrings.\n  [zupo]\n\n- Fix ``get_navigation_root()`` to return object instead of path.\n  [pbauer]\n\n- Implementation of ``get_permissions()``, ``get_roles()``,\n  ``grant_roles()`` and ``revoke roles()`` for users and groups.\n  [rudaporto, xiru]\n\n- Implementation of ``get_registry_record`` and ``set_registry_record``.\n  [pbauer]\n\n- Use `Makefile` to build the project, run tests, generate documentation, etc.\n  [witsch]\n\n- Moving all ReadTheDocs dependencies into ``rtd_requirements.txt``.\n  [zupo]\n\n\n0.1a2 (2012-09-03)\n------------------\n\n- Updated release, adding new features, test coverage, cleanup & refactor.\n  [hvelarde, avelino, ericof, jpgimenez, xiru, macagua, zupo]\n\n\n0.1a1 (2012-07-13)\n------------------\n\n- Initial release.\n  [davisagli, fulv, iElectric, jcerjak, jonstahl, kcleong, mauritsvanrees,\n  wamdam, witsch, zupo]\n\nLicense\n=======\n\nCopyright (C) 2012-2013 Plone Foundation\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License version 2\nas published by the Free Software Foundation.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n\n",
    "bugtrack_url": null,
    "license": "GPL version 2",
    "summary": "A Plone API.",
    "version": "2.2.3",
    "project_urls": {
        "Changelog": "https://github.com/plone/plone.api/blob/master/CHANGES.rst",
        "Documentation": "https://6.docs.plone.org/plone.api/index.html",
        "Homepage": "https://github.com/plone/plone.api",
        "Issue Tracker": "https://github.com/plone/plone.api/issues"
    },
    "split_keywords": [
        "plone",
        "api"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2a118e368ebfc981de2225067d30575c8ba8bb012e4ddb3567cdbdc71a21e27b",
                "md5": "40f1f26460fc08b09aae4f0d4e27a89b",
                "sha256": "cb72e49d739344b98a579e649f091005860f2912bed08bc05c5224de655d4687"
            },
            "downloads": -1,
            "filename": "plone.api-2.2.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "40f1f26460fc08b09aae4f0d4e27a89b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 88816,
            "upload_time": "2024-10-23T19:27:39",
            "upload_time_iso_8601": "2024-10-23T19:27:39.369067Z",
            "url": "https://files.pythonhosted.org/packages/2a/11/8e368ebfc981de2225067d30575c8ba8bb012e4ddb3567cdbdc71a21e27b/plone.api-2.2.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d6a379661197931b81cfaf6baabeec91982068e49e0404813a226e39337d2361",
                "md5": "fb2c5ae0e5b26dc704783dfcb3ccb6d5",
                "sha256": "7d748026222c4130a95eabaf8c8b4f8e6bfeb6a68cbee350296b71fd11644a74"
            },
            "downloads": -1,
            "filename": "plone_api-2.2.3.tar.gz",
            "has_sig": false,
            "md5_digest": "fb2c5ae0e5b26dc704783dfcb3ccb6d5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 114322,
            "upload_time": "2024-10-23T19:27:41",
            "upload_time_iso_8601": "2024-10-23T19:27:41.747510Z",
            "url": "https://files.pythonhosted.org/packages/d6/a3/79661197931b81cfaf6baabeec91982068e49e0404813a226e39337d2361/plone_api-2.2.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-23 19:27:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plone",
    "github_project": "plone.api",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "plone.api"
}
        
Elapsed time: 0.39032s