plone.app.linkintegrity


Nameplone.app.linkintegrity JSON
Version 4.0.3 PyPI version JSON
download
home_pagehttps://github.com/plone/plone.app.linkintegrity
SummaryManage link integrity in Plone.
upload_time2023-09-29 12:04:34
maintainer
docs_urlNone
authorPlone Foundation
requires_python>=3.8
licenseGPL version 2
keywords link integrity plone
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            plone.app.linkintegrity
=======================

Overview
--------

This package implement link integrity checking in Plone.  It makes use of the
zope3 event system in order to modify Plone itself as little as possible.


Features
--------

This package handles deleting an item in the Plone-User-interface (i.e.
deleting items in the view `folder_contents` via Actions / Delete).

Whenever an object that is referred to by another one via an `<a>` or `<img>`
tag is going to be deleted, a confirmation form is presented to the user.
The same applies to content referenced via a relation field and indexed in the
``zc.relation`` catalog, like via the related items behavior.
They can then decide to indeed delete the object, breaching link
integrity of the site or first edit the objects that link to the item in
question.

For relations set in a textfield, the ``isRelated`` reference is used.
For these references, plone.app.linkintegrity also handles modifications, if a content related via ``isRelated`` is modified.
For all other related content, other mechanisms handle updates.
One such handler can be found in ``plone.app.relationfield``.

Changes in 3.0
--------------

- Linkintegrity-relations are no longer stored in reference_catalog of
  Products.Archetypes. Instead it used zc.relation.

- No longer intercept the request on ``manage_deleteObjects``.
  This means that deleting with other methods (like manage_deleteObjects,
  plone.api.content.delete, ttw in the ZMI) no longer warns about
  linkintegrity-breaches. It now simply adds information about
  linkintegrity-breaches in the user-interface.

- LinkIntegrityNotificationException is not longer thrown anywhere.



Refresh the linkintegrity site status
-------------------------------------

In the case you'll need to update/refresh the linkintegrity status of the
whole site, you can call the ``@@updateLinkIntegrityInformation`` view.

It can be really slow operation.

Customization
-------------

On object created, added, modified events the ``modifiedContent`` handler
is called. This handler adapts an ``IRetriever`` object if found.
The package comes with one general adapter for Dexterity content.
You can easily write custom adapters implementing the ``IRetriever``
interface for your content type. Look at the ``retriever`` module in this
package for examples.

API
---

To check if there would be breaches when deleting one or more objects
you can use the following code:

.. code-block:: python

    from plone import api
    portal = api.portal.get()
    view = api.content.get_view(
        'delete_confirmation_info',
        portal,
        self.request)
    breaches = view.get_breaches([obj1, obj2])

`get_breaches` ignores breaches originating from any items that would also be
deleted by deleting the items (and their children if an item is a folder).

Each breach in `breaches` is a dictionary with a `target` (a dict with some
info on the object to be deleted) and a list of `sources`.
Each source is again a dict with `uid`, `title`, `url` and `accessible`
(a boolean telling you if the user can access that source).


To check items for links in html-fields you can use the methods in
``plone.app.linkintegrity.utils``:



``utils.hasIncomingLinks(obj)``
    Test if an object is linked to by other objects.

``utils.hasOutgoingLinks(obj)``
    Test if an object links to other objects.

``utils.getIncomingLinks(obj, from_attribute)``
    Return a generator of incoming relations.
    ``from_attribute`` is optional and defaults to ``plone.app.linkintegrity.utils.referencedRelationship``.
    Is set to None, all references pointing to the object are searched.

``utils.getOutgoingLinks(obj, from_attribute)``
    Return a generator of outgoing relations.
    ``from_attribute`` is optional and defaults to ``plone.app.linkintegrity.utils.referencedRelationship``.
    Is set to None, all references pointing from the object are searched.

``utils.linkintegrity_enabled()``
    Test if linkintegrity-feature is enables for users.


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

4.0.3 (2023-09-29)
------------------

Bug fixes:


- Report sources once per breach in delete_confirmation_info.
  [jaroel] (#95)


4.0.2 (2023-08-31)
------------------

Bug fixes:


- Remove outgoing 'isReferencing' RelationValues from catalog on deleting content item.
  [ksuess] (#93)


Internal:


- Update configuration files.
  [plone devs] (7723aeaf)


4.0.1 (2023-04-14)
------------------

Internal:


- Update configuration files.
  [plone devs] (5623f8b3)


4.0.0 (2023-03-13)
------------------

Breaking changes:


- Drop compatibility for Plone 5.2.  Support Plone 6 only.
  [maurits] (#60)


Bug fixes:


- Fixed test layer setup.
  Created content was bleeding into layers from other packages.
  [maurits] (#846)


3.6.1 (2022-04-28)
------------------

Bug fixes:


- Test fix: only load plone.app.contenttypes migration layer on Python 2.
  [maurits] (#641)


3.6.0 (2022-02-23)
------------------

New features:


- Track link integrity of referenced PDFs and other site objects in IFRAME SRC references. (#84)


3.5.0 (2021-12-29)
------------------

New features:


- Track integrity of video and audio files in HTML source tags. (#77)


3.4.1 (2021-03-02)
------------------

Bug fixes:


- Use base64.decodebytes instead of decodestring when possible.
  Fixes Python 3.9 compatibility in the tests.
  [maurits] (#81)


3.4.0 (2021-02-23)
------------------

New features:


- Drop Plone 5.1 support, due to possible incompatibility with older plone.app.uuid.
  [maurits] (#79)


Bug fixes:


- Fix Unauthorized exception when you edit a page that links to another page that you are not allowed to see.
  Fixes `issue 79 <https://github.com/plone/plone.app.linkintegrity/issues/79>`_.
  [maurits] (#79)


3.3.14 (2020-09-07)
-------------------

Bug fixes:


- Fixed deprecation warning for ComponentLookupError.
  [maurits] (#3130)


3.3.13 (2020-04-20)
-------------------

Bug fixes:


- Minor packaging updates. (#1)


3.3.12 (2019-10-12)
-------------------

Bug fixes:


- Explicitly load zcml of dependencies, instead of using ``includeDependencies``.
  [maurits] (#2952)


3.3.11 (2019-06-27)
-------------------

Bug fixes:


- Add missing i18n:translate calls
  [erral] (#73)


3.3.10 (2019-06-19)
-------------------

Bug fixes:


- Accept to have a broken object w/o aq_parent in test.
  [jensens] (#72)


3.3.9 (2019-05-01)
------------------

Bug fixes:


- Fix wrong i18n:translate to avoid ${DYNAMIC_CONTENT} in translation files
  [erral] (#69)


3.3.8 (2019-02-08)
------------------

No significant changes.


3.3.7 (2018-09-23)
------------------

Bug fixes:

- Fix tests in Python 3
  [pbauer]


3.3.6 (2018-06-19)
------------------

Bug fixes:

- Fix test to work with merged plone.login.
  [jensens]

- Python 3 compatibility.
  [pbauer]


3.3.5 (2018-04-04)
------------------

Bug fixes:

- Mark strings in delete confirmation screen translatable
  [erral]


3.3.4 (2018-02-04)
------------------

Bug fixes:

- Optimize migration of old Archetypes references.
  [davisagli]

- Prepare for Python 2 / 3 compatibility.
  [ale-rt, pbauer]


3.3.3 (2017-10-02)
------------------

New features:

- Prevent linkintegrity-handler from doing anything when it is switched of in the registry.
  This change also prevents some issues in migration from AT to DX since linkintegrity is disabled during the migration.
  [pbauer]

Bug fixes:

- Fix a missing tal condition in `delete_confirmation_info.pt` that caused a
  paragraph to be always visible, even without link breaches.
  [arsenico13]

- Fix view @@updateLinkIntegrityInformation after Language='all' no longer works.
  [pbauer]


3.3.2 (2017-08-14)
------------------

Bug fixes:

- Do not fail on invalid objects in reference_catalog.
  Fixes `issue 32 <https://github.com/plone/plone.app.linkintegrity/issues/32>`_
  and `48 <https://github.com/plone/plone.app.linkintegrity/issues/48>`_.
  [pbauer]

- Fix undeclared hard dependency on Archetypes
  [tomgross]


3.3.1 (2017-06-01)
------------------

Bug fixes:

- Improved code quality.  [gforcada]

- removed unittest2 dependency
  [kakshay21]


3.3 (2017-04-20)
----------------

New features:

- Support for any ``zc.relation`` refercences being checked by ``delete_confirmation_info`` dialog,
  not only references linked in text.
  [thet]

Bug fixes:

- PEP8.
  [thet]

- Update code to follow Plone styleguide.
  [gforcada]

3.2.2 (2017-04-02)
------------------

New features:

- Use plone.namedfile for testing images
  [didrix]

Bug fixes:

- Fix typo in logging method
  [tomgross]


3.2.1 (2017-02-20)
------------------

Bug fixes:

- Show breakage info even if catalog is out of sync
  [tomgross]


3.2.0 (2017-02-12)
------------------

New features:

- Compatibility with ZCatalog 4 (upgrade steps)
  [pbauer, jensens]


3.1 (2016-12-30)
----------------

New features:

- Information about contents within a selected folder for deletion.
  This information contains number of deleted objects,
  number of subfolders and number of published objects.
  [karalics]


3.0.8 (2016-11-09)
------------------

Bug fixes:

- Add coding headers on python files.
  [gforcada]

- Remove hard dependency on Archetypes (again).
  [davisagli]


3.0.7 (2016-09-16)
------------------

Bug fixes:

- Use transaction savepoints while calling @@updateLinkIntegrityInformation
  to keep memory usage under control.
  [ale-rt]


3.0.6 (2016-08-17)
------------------

Bug fixes:

- Fix object url in delete confirmation
  [vangheem]

- Use zope.interface decorator.
  [gforcada]


3.0.5 (2016-04-15)
------------------

Fixes:

- Fix test isolation problems: if a test calls transaction.commit() directly or
  indirectly it can not be an integration test, either avoid the commit or
  change the layer into a functional one.
  Fixes: https://github.com/plone/plone.app.linkintegrity/issues/36
  [gforcada]


3.0.4 (2016-02-02)
------------------

Fixes:

- Handle links that do not have an intid yet. Should help with
  upgrade issues.
  [vangheem]

- make handler.findObject() work when the webserver rewrites the portal name
  [tschorr]


3.0.3 (2015-11-26)
------------------

New:

- Introduce IRetriever adapter for customization flexibility.
  [tomgross]


3.0.2 (2015-09-27)
------------------

- Remove xml:lang and wrong xmlns from delete_confirmation_info.pt.
  [vincentfrentin]


3.0.1 (2015-09-11)
------------------

- Don't show delete_confirmation_info twice in delete_confirmation. Fixes #27
  [pbauer]


3.0 (2015-09-08)
----------------

- Drop the Archetypes-dependency by switching to use zc.relation instead of
  reference_catalog (Products.Archetypes).
  [bloodbare, pbauer, vangheem]

- No longer intercept the request on manage_deleteObjects. Instead only
  inject a warning in delete_confirmation. This means that deleting with
  other methods (like manage_deleteObjects, plone.api.content.delete, ttw
  in the ZMI) no longer warns about linkintegrity-breaches.
  [bloodbare, pbauer, vangheem]

- LinkIntegrityNotificationException is not longer thrown anywhere.
  [bloodbare, pbauer, vangheem]


2.1.2 (2015-05-04)
------------------

- Fix html structure in confirmation.pt
  [vincentfretin]


2.1.1 (2015-03-13)
------------------

- When using the update view for dexterity objects, only call the method if
  object provides IReferenceable
  [frapell]

- Removed Zope 2.10 compatibility from publisher monkey patch.
  [davisagli]


2.1.0 (2014-10-23)
------------------

- Read the enable_link_integrity_checks setting from plone.app.registry
  instead of from the portal_properties.
  [timo]

- Restructure package to fully support dexterity framework. Use two different
  test layers in ``plone.app.testing``, migrate all doctests into real
  TestCases.
  [saily, do3cc]


2.0.0 (2014-04-13)
------------------

- Adapt tests for removal of DT, DD and DL elements.
  Remove DL's from portal message in templates.
  https://github.com/plone/Products.CMFPlone/issues/153
  [khink, mrtango]


1.5.6 (2015-08-13)
------------------

- Backport improvements to ``@@updateLinkIntegrityInformation`` from
  plone5 branch.
  [pbauer]


1.5.4 (2014-01-27)
------------------

- Added support for sub path after uid of resolveuid
  [hoka]


1.5.3 (2013-08-13)
------------------

- Set a maxsize when decompressing request data.
  [davisagli]

- Fixed dexterity referenceablebehavior integration.
  [maurits]

- Fix #13681, documents referencing each other will now also trigger a link
  integrity warning.
  [do3cc]


1.5.2 (2013-05-23)
------------------

- Exceptions now return the repr() and not the str() of the object. This way
  we avoid, for File content types, loading the whole object data into memory.
  This closes https://dev.plone.org/ticket/13519
  [ericof]


1.5.1 (2013-03-05)
------------------

- unicode links should not raise errors. Fixes https://dev.plone.org/ticket/13468
  [vangheem]

- Dexterity: use zope.lifecycleevent instead of zope.app.container
  interfaces for Plone 4.3 support.
  [jone]

- Avoid a bug during link integrity check when a source or target of the
  reference has been already removed during the deletion process.
  This can happen during large delete processes.
  [thomasdesvenain]
- Monkey patch the Zope HTTPResponse status_code to include a mapping for
  linkintegritynotificationexception, to return a 200 code.
  [thepjot]

1.5.0 (2013-01-17)
------------------
- Fix a remove confirmation view bug.
  Displays the portal type title rather than the portal type name.
  This change also broke some tests that were checking for the name
  rather than the title, but I just fixed those.
  [jianaijun]

- Added support for Dexterity content types.  Link integrity
  support for Dexterity requires the plone.app.referenceablebehavior
  behavior to be enabled so that the Dexterity item can be used
  with Archetypes references.
  [jpgimenez]


1.4.7 (2012-10-03)
------------------

- Fixes UnicodeDecodeError on extractLinks
  This closes https://dev.plone.org/ticket/13168
  [ericof]


1.4.6 (2012-07-02)
------------------

- No more zope.app dependencies.
  [hannosch]

- Remove hard dependency on Archetypes.
  [davisagli]

1.4.5 - 2012-02-24
------------------

- Fix an error in handling absolute links to objects within the portal,
  which prevented references from being created based on those links.
  This closes https://dev.plone.org/ticket/12402
  [davisagli]

- Stabilize the sort order of breach sources returned for the
  confirmation view.
  [davisagli]

- Use the `get` method to retrieve the field value if the instance
  does not provide an accessor method. This is the case for instance
  for fields which have been added via schema extension.
  [malthe]

- Support resolveuid/UID references explicitly, by parsing and resolving
  these ourselves instead of relying on a view or script (which doesn't work).
  This fixes linkintegrity for sites with link-by-uid turned on.
  This closes https://dev.plone.org/ticket/12104
  [mj]

1.4.4 - 2011-10-04
------------------

- Add integrity references for cloned content items.
  This fixes http://dev.plone.org/plone/ticket/12254.
  [gotcha]

- Skip events subscribers during copy&paste of content items.
  This fixes http://dev.plone.org/plone/ticket/12206.
  [gotcha]

- Provide Archetypes-only fallback if `plone.uuid` is not available,
  restoring compatibility with Plone 4.0.x.
  [witsch]


1.4.3 - 2011-09-14
------------------

- Fix integrity reference generation for content not accessible by the editor.
  [witsch]

- Fix handling of relative links instead of relying on Acquisition.
  [witsch]


1.4.2 - 2011-07-04
------------------

- Objects that don't have a UUID cannot cause linkintegrity-breaches.
  This fixes http://dev.plone.org/plone/ticket/11904.
  [WouterVH]

- Adjust tests to the changed URL used for the `folder_contents` view.
  This refs http://dev.plone.org/plone/ticket/10122.
  [gotcha]

- Add new tests to prove `isLinked` can now be used safely.
  This refs http://dev.plone.org/plone/ticket/7784.
  [gotcha]


1.4.1 - 2011-05-12
------------------

- Fix decoding of colon-delimited list of confirmed oids in the request
  when one of the oids contains a colon.
  [davisagli]

- Add MANIFEST.in.
  [WouterVH]


1.4.0 - 2011-01-03
------------------

- Use `plone.uuid` to look up content UUIDs.
  [toutpt, davisagli]


1.3.3 - 2011-07-05
------------------

- Add new tests to prove `isLinked` can now be used safely.
  This refs http://dev.plone.org/plone/ticket/7784.
  [gotcha]


1.3.2 - 2011-05-12
------------------

- Fix decoding of colon-delimited list of confirmed oids in the request
  when one of the oids contains a colon.
  [davisagli]


1.3.1 - 2010-08-08
------------------

- Adjusted tests to no longer rely on sub-collections.
  [hannosch]

- Use the official ``aq_get`` API to acquire the request from a context.
  [hannosch]


1.3.0 - 2010-07-18
------------------

- Update license to GPL version 2 only.
  [hannosch]


1.3b2 - 2010-06-13
------------------

- Avoid using the deprecated five:implements directive.
  [hannosch]


1.3b1 - 2010-06-03
------------------

- Fix findObject to also catch the ZTK NotFound exception which may be
  raised by request.traverseName. Fixes
  http://dev.plone.org/plone/ticket/10549
  [davisagli]


1.3a5 - 2010-05-01
------------------

- Properly handle retry exception instead of getting the special-casing of
  exception handling when publishing with debug=1
  [davisagli]


1.3a4 - 2010-03-06
------------------

- Do not abort if a text field is `None`. In that case the HTML parser
  raises a `TypeError` instead of an `HTMLParseError`.
  [wichert]


1.3a3 - 2010-02-18
------------------

- Updated templates to match recent markup conventions.
  References http://dev.plone.org/plone/ticket/9981
  [spliter]

- Convert test setup to `collective.testcaselayer`.
  [witsch]

- Updated tests to not rely on specific CSS classes or ids.
  Refs http://dev.plone.org/plone/ticket/10231
  [limi, witsch]


1.3a2 - 2009-12-02
------------------

- Fix issue with the final submission of the delete confirmation page in
  Zope 2.12. This closes http://dev.plone.org/plone/ticket/9699.
  [davisagli]


1.3a1 - 2009-11-17
------------------

- Access the subtopics page directly since the tab is now hidden by default.
  [davisagli]

- Partially disable the test regarding the undo log as the outcome differs
  between Plone 3 and 4, probably due to changes in the test setup.
  Refs http://dev.plone.org/plone/ticket/7784
  [witsch]

- Add test to verify undo log entries are not longer missing after removing
  items via the "delete" action.  Refs http://dev.plone.org/plone/ticket/7784
  [witsch]


1.2 - 2009-10-10
----------------

- Also catch `NotFound` exceptions when trying to resolve linked objects.
  [optilude]


1.1 - 2009-08-31
----------------

- Make compatible with repoze.zope2. See README.txt for notes on how to
  deploy.
  [optilude]

- Don't use id() to record confirmed items. It can change on request
  boundaries. Use an encoded _p_oid instead.
  [optilude]

- Also regard traversal adapters when trying to resolve links into their
  corresponding objects.
  [witsch]

- Fix some tests to make sure that text values are treated as text/html
  in Zope 2.12, whose zope.contenttype is stricter when guessing the
  mimetype.
  [davisagli]

- Don't install the exception hook in Zope 2.12 where it is no longer
  needed and breaks exception handling.
  [davisagli]


1.0.12 - 2009-06-03
-------------------

- Compare UIDs instead of objects during cleanup of breach information in
  order to avoid expensive hashing in "... in ..." expressions.  This
  makes removing linked objects much faster.
  [regebro]


1.0.11 - 2008-11-15
-------------------

- Fix code to not silently swallow `ConflictErrors`.
  [witsch]

- Fix issue with dangling references to already removed objects.
  Fixes http://dev.plone.org/plone/ticket/8349 and
  http://dev.plone.org/plone/ticket/8390.
  [witsch]


1.0.10 - 2008-07-07
-------------------

- Fixed the recognizing of links to files (or any object) with a
  space in the id.  Fixes http://dev.plone.org/plone/ticket/8167.
  [maurits]

- Updated tests to work with LinguaPlone by unmarking the creation
  flag on new objects.
  [maurits]


1.0.9 - 2008-05-08
------------------

- Use acquisition API to support the "philikon-aq" branch.
  [witsch]

- Fix a problem with updating link integrity references during a
  request which trying to delete multiple other objects.
  [witsch]


1.0.8 - 2008-04-21
------------------

- Added missing i18n markup to `confirmation.pt`, also fixing
  http://dev.plone.org/plone/ticket/7995.
  [witsch]


1.0.7 - 2008-03-27
------------------

- Fixed accidental removal of references not related to link integrity.
  [dunny]


1.0.6 - 2008-03-08
------------------

- Added missing namespace declaration to avoid the warning about it.
  [wiggy]


1.0.5 - 2008-02-13
------------------

- Added missing i18n markup to confirmation.pt. This closes
  http://dev.plone.org/plone/ticket/7688.
  [hannosch]


1.0.4 - 2008-01-03
------------------

- Handle `IObjectRemovedEvents` with no attached request object.
  [witsch]

- Updated tests to work with Plone 4.0.
  [hannosch]

- Referencing items are now listed in alphabetical order
  [witsch]


1.0.3 - 2007-12-05
------------------

- Fixed setting up the test layer after GenericSetup update
  [witsch]


1.0.2 - 2007-11-07
------------------

- Fixed parser error when handling malformed HTML
  [witsch]

- Fixed security issue due to using pickles (see CVE-2007-5741)
  [witsch]


1.0.1 - 2007-09-10
------------------

- Added view for updating link integrity information for all site content
  [witsch]

- Made code in info.py more tolerant when encountering missing property
  sheets.
  [hannosch]


1.0 - 2007-08-16
----------------

- Minor bug fixes and enhancements
  [witsch]


1.0rc1.1 - 2007-07-12
---------------------

- Bug and test fixes after upgrade to Zope 2.10.4
  [witsch]


1.0rc1 - 2007-07-08
-------------------

- Bugfixes & additional tests
  [witsch]


1.0b3 - 2007-05-04
------------------

- No changes.

1.0b2 - 2007-04-30
------------------

- Integration of Plone's "delete confirmation" page
  [witsch]


1.0b1 - 2007-03-03
------------------

- Fix tests in regard to changed `folder_contents` and unicode issues
  [witsch]

- Updates to the monkey patch needed for five exceptions
  [wiggy]


1.0a2 - 2007-02-07
------------------

- Bugfixes & other minor enhancements
  [witsch]

- Eggification and move into plone.app namespace
  [optilude]

- Proof of concept & initial version
  [witsch]

- Initial package structure.
  [zopeskel]

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/plone.app.linkintegrity",
    "name": "plone.app.linkintegrity",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "link integrity plone",
    "author": "Plone Foundation",
    "author_email": "plone-developers@lists.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/65/75/3c89279e50a00f104aee1d8c9f82f709159a1576b044265b8eda5009c0bf/plone.app.linkintegrity-4.0.3.tar.gz",
    "platform": "Any",
    "description": "plone.app.linkintegrity\n=======================\n\nOverview\n--------\n\nThis package implement link integrity checking in Plone.  It makes use of the\nzope3 event system in order to modify Plone itself as little as possible.\n\n\nFeatures\n--------\n\nThis package handles deleting an item in the Plone-User-interface (i.e.\ndeleting items in the view `folder_contents` via Actions / Delete).\n\nWhenever an object that is referred to by another one via an `<a>` or `<img>`\ntag is going to be deleted, a confirmation form is presented to the user.\nThe same applies to content referenced via a relation field and indexed in the\n``zc.relation`` catalog, like via the related items behavior.\nThey can then decide to indeed delete the object, breaching link\nintegrity of the site or first edit the objects that link to the item in\nquestion.\n\nFor relations set in a textfield, the ``isRelated`` reference is used.\nFor these references, plone.app.linkintegrity also handles modifications, if a content related via ``isRelated`` is modified.\nFor all other related content, other mechanisms handle updates.\nOne such handler can be found in ``plone.app.relationfield``.\n\nChanges in 3.0\n--------------\n\n- Linkintegrity-relations are no longer stored in reference_catalog of\n  Products.Archetypes. Instead it used zc.relation.\n\n- No longer intercept the request on ``manage_deleteObjects``.\n  This means that deleting with other methods (like manage_deleteObjects,\n  plone.api.content.delete, ttw in the ZMI) no longer warns about\n  linkintegrity-breaches. It now simply adds information about\n  linkintegrity-breaches in the user-interface.\n\n- LinkIntegrityNotificationException is not longer thrown anywhere.\n\n\n\nRefresh the linkintegrity site status\n-------------------------------------\n\nIn the case you'll need to update/refresh the linkintegrity status of the\nwhole site, you can call the ``@@updateLinkIntegrityInformation`` view.\n\nIt can be really slow operation.\n\nCustomization\n-------------\n\nOn object created, added, modified events the ``modifiedContent`` handler\nis called. This handler adapts an ``IRetriever`` object if found.\nThe package comes with one general adapter for Dexterity content.\nYou can easily write custom adapters implementing the ``IRetriever``\ninterface for your content type. Look at the ``retriever`` module in this\npackage for examples.\n\nAPI\n---\n\nTo check if there would be breaches when deleting one or more objects\nyou can use the following code:\n\n.. code-block:: python\n\n    from plone import api\n    portal = api.portal.get()\n    view = api.content.get_view(\n        'delete_confirmation_info',\n        portal,\n        self.request)\n    breaches = view.get_breaches([obj1, obj2])\n\n`get_breaches` ignores breaches originating from any items that would also be\ndeleted by deleting the items (and their children if an item is a folder).\n\nEach breach in `breaches` is a dictionary with a `target` (a dict with some\ninfo on the object to be deleted) and a list of `sources`.\nEach source is again a dict with `uid`, `title`, `url` and `accessible`\n(a boolean telling you if the user can access that source).\n\n\nTo check items for links in html-fields you can use the methods in\n``plone.app.linkintegrity.utils``:\n\n\n\n``utils.hasIncomingLinks(obj)``\n    Test if an object is linked to by other objects.\n\n``utils.hasOutgoingLinks(obj)``\n    Test if an object links to other objects.\n\n``utils.getIncomingLinks(obj, from_attribute)``\n    Return a generator of incoming relations.\n    ``from_attribute`` is optional and defaults to ``plone.app.linkintegrity.utils.referencedRelationship``.\n    Is set to None, all references pointing to the object are searched.\n\n``utils.getOutgoingLinks(obj, from_attribute)``\n    Return a generator of outgoing relations.\n    ``from_attribute`` is optional and defaults to ``plone.app.linkintegrity.utils.referencedRelationship``.\n    Is set to None, all references pointing from the object are searched.\n\n``utils.linkintegrity_enabled()``\n    Test if linkintegrity-feature is enables for users.\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\n4.0.3 (2023-09-29)\n------------------\n\nBug fixes:\n\n\n- Report sources once per breach in delete_confirmation_info.\n  [jaroel] (#95)\n\n\n4.0.2 (2023-08-31)\n------------------\n\nBug fixes:\n\n\n- Remove outgoing 'isReferencing' RelationValues from catalog on deleting content item.\n  [ksuess] (#93)\n\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (7723aeaf)\n\n\n4.0.1 (2023-04-14)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (5623f8b3)\n\n\n4.0.0 (2023-03-13)\n------------------\n\nBreaking changes:\n\n\n- Drop compatibility for Plone 5.2.  Support Plone 6 only.\n  [maurits] (#60)\n\n\nBug fixes:\n\n\n- Fixed test layer setup.\n  Created content was bleeding into layers from other packages.\n  [maurits] (#846)\n\n\n3.6.1 (2022-04-28)\n------------------\n\nBug fixes:\n\n\n- Test fix: only load plone.app.contenttypes migration layer on Python 2.\n  [maurits] (#641)\n\n\n3.6.0 (2022-02-23)\n------------------\n\nNew features:\n\n\n- Track link integrity of referenced PDFs and other site objects in IFRAME SRC references. (#84)\n\n\n3.5.0 (2021-12-29)\n------------------\n\nNew features:\n\n\n- Track integrity of video and audio files in HTML source tags. (#77)\n\n\n3.4.1 (2021-03-02)\n------------------\n\nBug fixes:\n\n\n- Use base64.decodebytes instead of decodestring when possible.\n  Fixes Python 3.9 compatibility in the tests.\n  [maurits] (#81)\n\n\n3.4.0 (2021-02-23)\n------------------\n\nNew features:\n\n\n- Drop Plone 5.1 support, due to possible incompatibility with older plone.app.uuid.\n  [maurits] (#79)\n\n\nBug fixes:\n\n\n- Fix Unauthorized exception when you edit a page that links to another page that you are not allowed to see.\n  Fixes `issue 79 <https://github.com/plone/plone.app.linkintegrity/issues/79>`_.\n  [maurits] (#79)\n\n\n3.3.14 (2020-09-07)\n-------------------\n\nBug fixes:\n\n\n- Fixed deprecation warning for ComponentLookupError.\n  [maurits] (#3130)\n\n\n3.3.13 (2020-04-20)\n-------------------\n\nBug fixes:\n\n\n- Minor packaging updates. (#1)\n\n\n3.3.12 (2019-10-12)\n-------------------\n\nBug fixes:\n\n\n- Explicitly load zcml of dependencies, instead of using ``includeDependencies``.\n  [maurits] (#2952)\n\n\n3.3.11 (2019-06-27)\n-------------------\n\nBug fixes:\n\n\n- Add missing i18n:translate calls\n  [erral] (#73)\n\n\n3.3.10 (2019-06-19)\n-------------------\n\nBug fixes:\n\n\n- Accept to have a broken object w/o aq_parent in test.\n  [jensens] (#72)\n\n\n3.3.9 (2019-05-01)\n------------------\n\nBug fixes:\n\n\n- Fix wrong i18n:translate to avoid ${DYNAMIC_CONTENT} in translation files\n  [erral] (#69)\n\n\n3.3.8 (2019-02-08)\n------------------\n\nNo significant changes.\n\n\n3.3.7 (2018-09-23)\n------------------\n\nBug fixes:\n\n- Fix tests in Python 3\n  [pbauer]\n\n\n3.3.6 (2018-06-19)\n------------------\n\nBug fixes:\n\n- Fix test to work with merged plone.login.\n  [jensens]\n\n- Python 3 compatibility.\n  [pbauer]\n\n\n3.3.5 (2018-04-04)\n------------------\n\nBug fixes:\n\n- Mark strings in delete confirmation screen translatable\n  [erral]\n\n\n3.3.4 (2018-02-04)\n------------------\n\nBug fixes:\n\n- Optimize migration of old Archetypes references.\n  [davisagli]\n\n- Prepare for Python 2 / 3 compatibility.\n  [ale-rt, pbauer]\n\n\n3.3.3 (2017-10-02)\n------------------\n\nNew features:\n\n- Prevent linkintegrity-handler from doing anything when it is switched of in the registry.\n  This change also prevents some issues in migration from AT to DX since linkintegrity is disabled during the migration.\n  [pbauer]\n\nBug fixes:\n\n- Fix a missing tal condition in `delete_confirmation_info.pt` that caused a\n  paragraph to be always visible, even without link breaches.\n  [arsenico13]\n\n- Fix view @@updateLinkIntegrityInformation after Language='all' no longer works.\n  [pbauer]\n\n\n3.3.2 (2017-08-14)\n------------------\n\nBug fixes:\n\n- Do not fail on invalid objects in reference_catalog.\n  Fixes `issue 32 <https://github.com/plone/plone.app.linkintegrity/issues/32>`_\n  and `48 <https://github.com/plone/plone.app.linkintegrity/issues/48>`_.\n  [pbauer]\n\n- Fix undeclared hard dependency on Archetypes\n  [tomgross]\n\n\n3.3.1 (2017-06-01)\n------------------\n\nBug fixes:\n\n- Improved code quality.  [gforcada]\n\n- removed unittest2 dependency\n  [kakshay21]\n\n\n3.3 (2017-04-20)\n----------------\n\nNew features:\n\n- Support for any ``zc.relation`` refercences being checked by ``delete_confirmation_info`` dialog,\n  not only references linked in text.\n  [thet]\n\nBug fixes:\n\n- PEP8.\n  [thet]\n\n- Update code to follow Plone styleguide.\n  [gforcada]\n\n3.2.2 (2017-04-02)\n------------------\n\nNew features:\n\n- Use plone.namedfile for testing images\n  [didrix]\n\nBug fixes:\n\n- Fix typo in logging method\n  [tomgross]\n\n\n3.2.1 (2017-02-20)\n------------------\n\nBug fixes:\n\n- Show breakage info even if catalog is out of sync\n  [tomgross]\n\n\n3.2.0 (2017-02-12)\n------------------\n\nNew features:\n\n- Compatibility with ZCatalog 4 (upgrade steps)\n  [pbauer, jensens]\n\n\n3.1 (2016-12-30)\n----------------\n\nNew features:\n\n- Information about contents within a selected folder for deletion.\n  This information contains number of deleted objects,\n  number of subfolders and number of published objects.\n  [karalics]\n\n\n3.0.8 (2016-11-09)\n------------------\n\nBug fixes:\n\n- Add coding headers on python files.\n  [gforcada]\n\n- Remove hard dependency on Archetypes (again).\n  [davisagli]\n\n\n3.0.7 (2016-09-16)\n------------------\n\nBug fixes:\n\n- Use transaction savepoints while calling @@updateLinkIntegrityInformation\n  to keep memory usage under control.\n  [ale-rt]\n\n\n3.0.6 (2016-08-17)\n------------------\n\nBug fixes:\n\n- Fix object url in delete confirmation\n  [vangheem]\n\n- Use zope.interface decorator.\n  [gforcada]\n\n\n3.0.5 (2016-04-15)\n------------------\n\nFixes:\n\n- Fix test isolation problems: if a test calls transaction.commit() directly or\n  indirectly it can not be an integration test, either avoid the commit or\n  change the layer into a functional one.\n  Fixes: https://github.com/plone/plone.app.linkintegrity/issues/36\n  [gforcada]\n\n\n3.0.4 (2016-02-02)\n------------------\n\nFixes:\n\n- Handle links that do not have an intid yet. Should help with\n  upgrade issues.\n  [vangheem]\n\n- make handler.findObject() work when the webserver rewrites the portal name\n  [tschorr]\n\n\n3.0.3 (2015-11-26)\n------------------\n\nNew:\n\n- Introduce IRetriever adapter for customization flexibility.\n  [tomgross]\n\n\n3.0.2 (2015-09-27)\n------------------\n\n- Remove xml:lang and wrong xmlns from delete_confirmation_info.pt.\n  [vincentfrentin]\n\n\n3.0.1 (2015-09-11)\n------------------\n\n- Don't show delete_confirmation_info twice in delete_confirmation. Fixes #27\n  [pbauer]\n\n\n3.0 (2015-09-08)\n----------------\n\n- Drop the Archetypes-dependency by switching to use zc.relation instead of\n  reference_catalog (Products.Archetypes).\n  [bloodbare, pbauer, vangheem]\n\n- No longer intercept the request on manage_deleteObjects. Instead only\n  inject a warning in delete_confirmation. This means that deleting with\n  other methods (like manage_deleteObjects, plone.api.content.delete, ttw\n  in the ZMI) no longer warns about linkintegrity-breaches.\n  [bloodbare, pbauer, vangheem]\n\n- LinkIntegrityNotificationException is not longer thrown anywhere.\n  [bloodbare, pbauer, vangheem]\n\n\n2.1.2 (2015-05-04)\n------------------\n\n- Fix html structure in confirmation.pt\n  [vincentfretin]\n\n\n2.1.1 (2015-03-13)\n------------------\n\n- When using the update view for dexterity objects, only call the method if\n  object provides IReferenceable\n  [frapell]\n\n- Removed Zope 2.10 compatibility from publisher monkey patch.\n  [davisagli]\n\n\n2.1.0 (2014-10-23)\n------------------\n\n- Read the enable_link_integrity_checks setting from plone.app.registry\n  instead of from the portal_properties.\n  [timo]\n\n- Restructure package to fully support dexterity framework. Use two different\n  test layers in ``plone.app.testing``, migrate all doctests into real\n  TestCases.\n  [saily, do3cc]\n\n\n2.0.0 (2014-04-13)\n------------------\n\n- Adapt tests for removal of DT, DD and DL elements.\n  Remove DL's from portal message in templates.\n  https://github.com/plone/Products.CMFPlone/issues/153\n  [khink, mrtango]\n\n\n1.5.6 (2015-08-13)\n------------------\n\n- Backport improvements to ``@@updateLinkIntegrityInformation`` from\n  plone5 branch.\n  [pbauer]\n\n\n1.5.4 (2014-01-27)\n------------------\n\n- Added support for sub path after uid of resolveuid\n  [hoka]\n\n\n1.5.3 (2013-08-13)\n------------------\n\n- Set a maxsize when decompressing request data.\n  [davisagli]\n\n- Fixed dexterity referenceablebehavior integration.\n  [maurits]\n\n- Fix #13681, documents referencing each other will now also trigger a link\n  integrity warning.\n  [do3cc]\n\n\n1.5.2 (2013-05-23)\n------------------\n\n- Exceptions now return the repr() and not the str() of the object. This way\n  we avoid, for File content types, loading the whole object data into memory.\n  This closes https://dev.plone.org/ticket/13519\n  [ericof]\n\n\n1.5.1 (2013-03-05)\n------------------\n\n- unicode links should not raise errors. Fixes https://dev.plone.org/ticket/13468\n  [vangheem]\n\n- Dexterity: use zope.lifecycleevent instead of zope.app.container\n  interfaces for Plone 4.3 support.\n  [jone]\n\n- Avoid a bug during link integrity check when a source or target of the\n  reference has been already removed during the deletion process.\n  This can happen during large delete processes.\n  [thomasdesvenain]\n- Monkey patch the Zope HTTPResponse status_code to include a mapping for\n  linkintegritynotificationexception, to return a 200 code.\n  [thepjot]\n\n1.5.0 (2013-01-17)\n------------------\n- Fix a remove confirmation view bug.\n  Displays the portal type title rather than the portal type name.\n  This change also broke some tests that were checking for the name\n  rather than the title, but I just fixed those.\n  [jianaijun]\n\n- Added support for Dexterity content types.  Link integrity\n  support for Dexterity requires the plone.app.referenceablebehavior\n  behavior to be enabled so that the Dexterity item can be used\n  with Archetypes references.\n  [jpgimenez]\n\n\n1.4.7 (2012-10-03)\n------------------\n\n- Fixes UnicodeDecodeError on extractLinks\n  This closes https://dev.plone.org/ticket/13168\n  [ericof]\n\n\n1.4.6 (2012-07-02)\n------------------\n\n- No more zope.app dependencies.\n  [hannosch]\n\n- Remove hard dependency on Archetypes.\n  [davisagli]\n\n1.4.5 - 2012-02-24\n------------------\n\n- Fix an error in handling absolute links to objects within the portal,\n  which prevented references from being created based on those links.\n  This closes https://dev.plone.org/ticket/12402\n  [davisagli]\n\n- Stabilize the sort order of breach sources returned for the\n  confirmation view.\n  [davisagli]\n\n- Use the `get` method to retrieve the field value if the instance\n  does not provide an accessor method. This is the case for instance\n  for fields which have been added via schema extension.\n  [malthe]\n\n- Support resolveuid/UID references explicitly, by parsing and resolving\n  these ourselves instead of relying on a view or script (which doesn't work).\n  This fixes linkintegrity for sites with link-by-uid turned on.\n  This closes https://dev.plone.org/ticket/12104\n  [mj]\n\n1.4.4 - 2011-10-04\n------------------\n\n- Add integrity references for cloned content items.\n  This fixes http://dev.plone.org/plone/ticket/12254.\n  [gotcha]\n\n- Skip events subscribers during copy&paste of content items.\n  This fixes http://dev.plone.org/plone/ticket/12206.\n  [gotcha]\n\n- Provide Archetypes-only fallback if `plone.uuid` is not available,\n  restoring compatibility with Plone 4.0.x.\n  [witsch]\n\n\n1.4.3 - 2011-09-14\n------------------\n\n- Fix integrity reference generation for content not accessible by the editor.\n  [witsch]\n\n- Fix handling of relative links instead of relying on Acquisition.\n  [witsch]\n\n\n1.4.2 - 2011-07-04\n------------------\n\n- Objects that don't have a UUID cannot cause linkintegrity-breaches.\n  This fixes http://dev.plone.org/plone/ticket/11904.\n  [WouterVH]\n\n- Adjust tests to the changed URL used for the `folder_contents` view.\n  This refs http://dev.plone.org/plone/ticket/10122.\n  [gotcha]\n\n- Add new tests to prove `isLinked` can now be used safely.\n  This refs http://dev.plone.org/plone/ticket/7784.\n  [gotcha]\n\n\n1.4.1 - 2011-05-12\n------------------\n\n- Fix decoding of colon-delimited list of confirmed oids in the request\n  when one of the oids contains a colon.\n  [davisagli]\n\n- Add MANIFEST.in.\n  [WouterVH]\n\n\n1.4.0 - 2011-01-03\n------------------\n\n- Use `plone.uuid` to look up content UUIDs.\n  [toutpt, davisagli]\n\n\n1.3.3 - 2011-07-05\n------------------\n\n- Add new tests to prove `isLinked` can now be used safely.\n  This refs http://dev.plone.org/plone/ticket/7784.\n  [gotcha]\n\n\n1.3.2 - 2011-05-12\n------------------\n\n- Fix decoding of colon-delimited list of confirmed oids in the request\n  when one of the oids contains a colon.\n  [davisagli]\n\n\n1.3.1 - 2010-08-08\n------------------\n\n- Adjusted tests to no longer rely on sub-collections.\n  [hannosch]\n\n- Use the official ``aq_get`` API to acquire the request from a context.\n  [hannosch]\n\n\n1.3.0 - 2010-07-18\n------------------\n\n- Update license to GPL version 2 only.\n  [hannosch]\n\n\n1.3b2 - 2010-06-13\n------------------\n\n- Avoid using the deprecated five:implements directive.\n  [hannosch]\n\n\n1.3b1 - 2010-06-03\n------------------\n\n- Fix findObject to also catch the ZTK NotFound exception which may be\n  raised by request.traverseName. Fixes\n  http://dev.plone.org/plone/ticket/10549\n  [davisagli]\n\n\n1.3a5 - 2010-05-01\n------------------\n\n- Properly handle retry exception instead of getting the special-casing of\n  exception handling when publishing with debug=1\n  [davisagli]\n\n\n1.3a4 - 2010-03-06\n------------------\n\n- Do not abort if a text field is `None`. In that case the HTML parser\n  raises a `TypeError` instead of an `HTMLParseError`.\n  [wichert]\n\n\n1.3a3 - 2010-02-18\n------------------\n\n- Updated templates to match recent markup conventions.\n  References http://dev.plone.org/plone/ticket/9981\n  [spliter]\n\n- Convert test setup to `collective.testcaselayer`.\n  [witsch]\n\n- Updated tests to not rely on specific CSS classes or ids.\n  Refs http://dev.plone.org/plone/ticket/10231\n  [limi, witsch]\n\n\n1.3a2 - 2009-12-02\n------------------\n\n- Fix issue with the final submission of the delete confirmation page in\n  Zope 2.12. This closes http://dev.plone.org/plone/ticket/9699.\n  [davisagli]\n\n\n1.3a1 - 2009-11-17\n------------------\n\n- Access the subtopics page directly since the tab is now hidden by default.\n  [davisagli]\n\n- Partially disable the test regarding the undo log as the outcome differs\n  between Plone 3 and 4, probably due to changes in the test setup.\n  Refs http://dev.plone.org/plone/ticket/7784\n  [witsch]\n\n- Add test to verify undo log entries are not longer missing after removing\n  items via the \"delete\" action.  Refs http://dev.plone.org/plone/ticket/7784\n  [witsch]\n\n\n1.2 - 2009-10-10\n----------------\n\n- Also catch `NotFound` exceptions when trying to resolve linked objects.\n  [optilude]\n\n\n1.1 - 2009-08-31\n----------------\n\n- Make compatible with repoze.zope2. See README.txt for notes on how to\n  deploy.\n  [optilude]\n\n- Don't use id() to record confirmed items. It can change on request\n  boundaries. Use an encoded _p_oid instead.\n  [optilude]\n\n- Also regard traversal adapters when trying to resolve links into their\n  corresponding objects.\n  [witsch]\n\n- Fix some tests to make sure that text values are treated as text/html\n  in Zope 2.12, whose zope.contenttype is stricter when guessing the\n  mimetype.\n  [davisagli]\n\n- Don't install the exception hook in Zope 2.12 where it is no longer\n  needed and breaks exception handling.\n  [davisagli]\n\n\n1.0.12 - 2009-06-03\n-------------------\n\n- Compare UIDs instead of objects during cleanup of breach information in\n  order to avoid expensive hashing in \"... in ...\" expressions.  This\n  makes removing linked objects much faster.\n  [regebro]\n\n\n1.0.11 - 2008-11-15\n-------------------\n\n- Fix code to not silently swallow `ConflictErrors`.\n  [witsch]\n\n- Fix issue with dangling references to already removed objects.\n  Fixes http://dev.plone.org/plone/ticket/8349 and\n  http://dev.plone.org/plone/ticket/8390.\n  [witsch]\n\n\n1.0.10 - 2008-07-07\n-------------------\n\n- Fixed the recognizing of links to files (or any object) with a\n  space in the id.  Fixes http://dev.plone.org/plone/ticket/8167.\n  [maurits]\n\n- Updated tests to work with LinguaPlone by unmarking the creation\n  flag on new objects.\n  [maurits]\n\n\n1.0.9 - 2008-05-08\n------------------\n\n- Use acquisition API to support the \"philikon-aq\" branch.\n  [witsch]\n\n- Fix a problem with updating link integrity references during a\n  request which trying to delete multiple other objects.\n  [witsch]\n\n\n1.0.8 - 2008-04-21\n------------------\n\n- Added missing i18n markup to `confirmation.pt`, also fixing\n  http://dev.plone.org/plone/ticket/7995.\n  [witsch]\n\n\n1.0.7 - 2008-03-27\n------------------\n\n- Fixed accidental removal of references not related to link integrity.\n  [dunny]\n\n\n1.0.6 - 2008-03-08\n------------------\n\n- Added missing namespace declaration to avoid the warning about it.\n  [wiggy]\n\n\n1.0.5 - 2008-02-13\n------------------\n\n- Added missing i18n markup to confirmation.pt. This closes\n  http://dev.plone.org/plone/ticket/7688.\n  [hannosch]\n\n\n1.0.4 - 2008-01-03\n------------------\n\n- Handle `IObjectRemovedEvents` with no attached request object.\n  [witsch]\n\n- Updated tests to work with Plone 4.0.\n  [hannosch]\n\n- Referencing items are now listed in alphabetical order\n  [witsch]\n\n\n1.0.3 - 2007-12-05\n------------------\n\n- Fixed setting up the test layer after GenericSetup update\n  [witsch]\n\n\n1.0.2 - 2007-11-07\n------------------\n\n- Fixed parser error when handling malformed HTML\n  [witsch]\n\n- Fixed security issue due to using pickles (see CVE-2007-5741)\n  [witsch]\n\n\n1.0.1 - 2007-09-10\n------------------\n\n- Added view for updating link integrity information for all site content\n  [witsch]\n\n- Made code in info.py more tolerant when encountering missing property\n  sheets.\n  [hannosch]\n\n\n1.0 - 2007-08-16\n----------------\n\n- Minor bug fixes and enhancements\n  [witsch]\n\n\n1.0rc1.1 - 2007-07-12\n---------------------\n\n- Bug and test fixes after upgrade to Zope 2.10.4\n  [witsch]\n\n\n1.0rc1 - 2007-07-08\n-------------------\n\n- Bugfixes & additional tests\n  [witsch]\n\n\n1.0b3 - 2007-05-04\n------------------\n\n- No changes.\n\n1.0b2 - 2007-04-30\n------------------\n\n- Integration of Plone's \"delete confirmation\" page\n  [witsch]\n\n\n1.0b1 - 2007-03-03\n------------------\n\n- Fix tests in regard to changed `folder_contents` and unicode issues\n  [witsch]\n\n- Updates to the monkey patch needed for five exceptions\n  [wiggy]\n\n\n1.0a2 - 2007-02-07\n------------------\n\n- Bugfixes & other minor enhancements\n  [witsch]\n\n- Eggification and move into plone.app namespace\n  [optilude]\n\n- Proof of concept & initial version\n  [witsch]\n\n- Initial package structure.\n  [zopeskel]\n",
    "bugtrack_url": null,
    "license": "GPL version 2",
    "summary": "Manage link integrity in Plone.",
    "version": "4.0.3",
    "project_urls": {
        "Homepage": "https://github.com/plone/plone.app.linkintegrity"
    },
    "split_keywords": [
        "link",
        "integrity",
        "plone"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d9e6931b0911c1f9011ded12f1ad80ccf6b58a16afbb64d97d37117f250e536d",
                "md5": "96e155165c3b5bee05ec80925d64fb3b",
                "sha256": "1c3a40857bd993b8e0878b4a5aac5c8dfc62df87ec60bd0f7334db59552e4bad"
            },
            "downloads": -1,
            "filename": "plone.app.linkintegrity-4.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96e155165c3b5bee05ec80925d64fb3b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 36842,
            "upload_time": "2023-09-29T12:04:31",
            "upload_time_iso_8601": "2023-09-29T12:04:31.818761Z",
            "url": "https://files.pythonhosted.org/packages/d9/e6/931b0911c1f9011ded12f1ad80ccf6b58a16afbb64d97d37117f250e536d/plone.app.linkintegrity-4.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "65753c89279e50a00f104aee1d8c9f82f709159a1576b044265b8eda5009c0bf",
                "md5": "b2306d2affd6c308af298ae01a483024",
                "sha256": "8ca5673e4d5a1b41f2c791db28e5c828419da8e053c6f578f28d497a3039a834"
            },
            "downloads": -1,
            "filename": "plone.app.linkintegrity-4.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "b2306d2affd6c308af298ae01a483024",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 43935,
            "upload_time": "2023-09-29T12:04:34",
            "upload_time_iso_8601": "2023-09-29T12:04:34.165765Z",
            "url": "https://files.pythonhosted.org/packages/65/75/3c89279e50a00f104aee1d8c9f82f709159a1576b044265b8eda5009c0bf/plone.app.linkintegrity-4.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-29 12:04:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plone",
    "github_project": "plone.app.linkintegrity",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "plone.app.linkintegrity"
}
        
Elapsed time: 0.13011s