Persistent
This package provides a base class for persistent objects with the advantage that the object is only marked as changed if an attribute has really changed.
>>> import transaction >>> from ZODB.tests.util import DB>>> from lovely import persistent>>> p = LovelyPersistent() >>> p._p_changed False>>> p.a = 1 >>> db = DB() >>> conn = db.open() >>> conn.root()['p'] = p >>> transaction.commit()
After commiting the changes the object is no longer in changed state.
>>> p._p_changed False
Setting a with its existing value doesn’t put the object in cahnged state.
>>> p.a 1 >>> p.a = 1 >>> p._p_changed False
But modifying a :
>>> p.a = 2 >>> p._p_changed True >>> transaction.commit()>>> p._p_changed False
Deleting an attribute also put the object into changed state.
>>> del p.a >>> p._p_changed True
Special Properties
Special property implementations do work too. To show this we use the fieldproperties from zope.schema.
>>> from zope.schema.fieldproperty import FieldProperty >>> from zope import schema, interface >>> class IMyFace(interface.Interface): ... eyesOpen = schema.Bool(default=True, required=False)>>> class MyFace(persistent.Persistent): ... eyesOpen = FieldProperty(IMyFace['eyesOpen'])>>> persistent.tests.MyFace = MyFace >>> MyFace.__module__ = persistent.tests.setUp.__module__ >>> myFace = conn.root()['myFace'] = MyFace() >>> transaction.commit()
Default values.
>>> myFace.eyesOpen True
Validation.
>>> myFace.eyesOpen = 'not always'
Traceback (most recent call last):
...
WrongType: ('not always', <type 'bool'>)
Note, setting to default value does not change the object.
>>> transaction.commit() >>> myFace.eyesOpen = True >>> myFace._p_changed False>>> transaction.commit() >>> myFace.eyesOpen = False >>> myFace._p_changed True
Changes in lovely.persistent
2007/12/10 0.1.1
moved to zope.org
2007/06/19 0.1.0a1
added zodb to dependencies
added support for fieldproperties
Download
Metadata
Release files for lovely.persistent 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lovely.persistent-0.1.1.tar.gz | 5.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lovely.persistent-0.1.1-py2.4.egg | Legacy Egg format | - | - | Details |
Total release size: 14.9 kB
Release files / lovely.persistent-0.1.1.tar.gz
| Download URL | lovely.persistent-0.1.1.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb1ad68ed1288ea0a09a80b3919367d949b2854756148d902824511de74efafe
|
|
BLAKE2b-256 checksum How to use checksums |
c908d216e44797d6aab22042039fef22b3d8d10a7203b33fa4b7f4f1e383c200
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / lovely.persistent-0.1.1-py2.4.egg
| Download URL | lovely.persistent-0.1.1-py2.4.egg |
|---|---|
| Size | 9.5 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
456f00bcbf7832391bd28d55112e30f11529775fc09b4990e53efa9a6b2a02ec
|
|
BLAKE2b-256 checksum How to use checksums |
dccc20e1765405756bef44b1a447424263478ef2cb0916ef549806d515682899
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |