You are here: Home / LBN / Up2date / Plone and Zope / BastionLinux 13 / zope.lifecycleevent-3.6.2-2.lbn13.noarch

zope.lifecycleevent-3.6.2-2.lbn13.noarch

Package Attributes
RPM  zope.lifecycleevent-3.6.2-2.lbn13.noarch.rpm Architecture  noarch Size  36631 Created  2017/08/04 11:06:19 UTC
Package Specification
Summary Object life-cycle events
Group Application/Internet
License UNKNOWN
Home Page http://pypi.python.org/pypi/zope.lifecycleevent
Description

================= Life-cycle events =================

In Zope 3, events are used by components to inform each other about relevant new objects and object modifications.

To keep all subscribers up to date it is indispensable that the life cycle of an object is accompanied by various events.

>>> from zope.event import notify >>> from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent

>>> class Sample(object) : ... "Test class"

>>> obj = Sample() >>> notify(ObjectCreatedEvent(obj))

>>> obj.modified = True >>> notify(ObjectModifiedEvent(obj))

Zope 3's Dublin Core Metadata for instance, rely on the bare ObjectCreatedEvent and ObjectModifiedEvent to record creation and modification times. Other event consumers like catalogs and caches may need more information to update themselves in an efficient manner. The necessary information can be provided as optional modification descriptions of the ObjectModifiedEvent.

Some examples:

>>> from zope.interface import Interface, Attribute, implements >>> class IFile(Interface): ... data = Attribute("Data") ...

>>> class File(object): ... implements(IFile) ...

>>> file = File() >>> file.data = "123" >>> notify(ObjectModifiedEvent(obj, IFile))

This says that we modified something via IFile. Note that an interface is an acceptable description. In fact, we might allow pretty much anything as a description and it depends on your needs what kind of descriptions you use.

In the following we use an IAttributes description to describe in more detail which parts of an object where modified :

>>> file.data = "456"

>>> from zope.dublincore.interfaces import IZopeDublinCore >>> from zope.interface import directlyProvides >>> from zope.annotation.interfaces import IAttributeAnnotatable >>> directlyProvides(file, IAttributeAnnotatable)

>>> IZopeDublinCore(file).title = u"New title" >>> IZopeDublinCore(file).title = u"New description"

>>> from zope.lifecycleevent import Attributes >>> event = ObjectModifiedEvent( ... obj, ... Attributes(IFile, data), ... Attributes(IZopeDublinCore, title, description), ... ) >>> notify(event)

This says we modified the file data and the DC title and description.

======= CHANGES =======

  1. 5.2 (2009-05-17) ------------------
  • ``IObjectMovedEvent``, ``IObjectAddedEvent``, ``IObjectRemovedEvent`` interfaces and ``ObjectMovedEvent``, ``ObjectAddedEvent`` and ``ObjectRemovedEvent`` classes copied here from zope.container (plus tests). The intent is to allow packages that rely on these interfaces or the event classes to rely on zope.lifecycleevent (which has few dependencies) instead of zope.container (which has many).
  1. 5.1 (2009-03-09) ------------------
  • Remove deprecated code and thus remove dependency on zope.deferredimport.
  • Change package's mailing list address to zope-dev at zope.org, as zope3-dev at zope.org is now retired.
  • Update package's description and documentation.
  1. 5.0 (2009-01-31) ------------------
  • Remove old module declarations from classes.
  • Use zope.container instead of zope.app.container.
  1. 4.0 (2007-09-01) ------------------

Initial release as an independent package

Requires
rpmlib(PayloadFilesHavePrefix)  
rpmlib(PartialHardlinkSets)  
rpmlib(CompressedFileNames)  
/bin/sh  
rpmlib(PayloadIsXz)  
rpmlib(FileDigests)  
Provides
zope.lifecycleevent
Obsoletes
zope.lifecycleevent-egginfo

Document Actions