Introduction
============

This package integrates the low-level `plone.uuid`_ into Plone-the-
application. In particular, it:

* Registers a ``portal_catalog`` indexer for the ``UID`` index that allows an
  object's UUID to be indexed.

  This name is intentionally chosen to be the same as the Archetypes UID()
  attribute, which is already indexed by Plone. The effect is that the UID
  catalog attribute/metadata is now generalised to all content that supports the
  ``plone.uuid`` protocol.

  As of version 1.7, ``Products.Archetypes`` depends on ``plone.uuid`` and
  implements an ``IUUID`` adapter suitable for Archetypes content. It also
  uses the ``plone.uuid`` ``IUUIDGenerator`` utility to generate UUIDs for
  (new) content, although note that UUIDs generated by the pre-1.7 UUID
  algorithm, whilst different, cannot collide with the UUIDs generated by
  the default ``IUUIDGenerator`` implementation.

  It follows that the `plone.uuid`_ ``IUUID`` adapter and ``@@uuid`` view are
  now the preferred, generalised way to look up a UUID for an object.
* Registers a utility view, ``@@redirect-to-uuid``. You can use this with
  a URL like::

    http://example.org/some/path/@@redirect-to-uuid/b2dc6f7a-9d17-11df-8788-58b035f3cfa0

  This will then redirect to the object identified by that URL.

    *Hint:* You can use the ``@@uuid`` view from `plone.uuid`_ to render a
    UUID. In TAL, you can do something like::

        <a tal:attributes="href string:${portal_url}/@@redirect-to-uuid/${obj/@@uuid}">Click here</a>
* Provides several utility methods in the ``plone.app.uuid.utils`` module:

  ``uuidToPhysicalPath(uuid)``
      Returns the physical path (relative to the ZODB root) as a string of the
      object with the given UUID, or None if it cannot be found.

  ``uuidToURL(uuid)``
      Returns the absolute URL of the object with the given UUID, or None if it
      cannot be found.

  ``uuidToObject(uuid)``
      Returns the content object associated with the given UUID, or None if it
      cannot be found.

Please see the `plone.uuid`_ package for more details about how UUIDs are
generated and can be accessed.

.. _plone.uuid: http://pypi.python.org/pypi/plone.uuid
