[Zope-dev] The Application object
Jeff K. Hoffman
jeff.hoffman@goingv.com
Mon, 17 Jul 2000 13:10:37 -0400 (EDT)
On Mon, 17 Jul 2000, Shane Hathaway wrote:
> The way to get the root application object is to open a connection to
> the ZODB and get the 'Application' object from the list of root
> objects. There is an easy shortcut:
>
> import Zope
> app = Zope.app()
>
> app now refers to a *copy* of the root Application object.
Yeehaw, that worked! I was so close. :-)
> When you're done modifying it and its descendants you have to commit or
> abort the transaction.
[snip]
Do I need to commit or abort even if I don't make changes to the
application object? The only thing I need it for is to get to the
Control_Panel; I am instantiating ZClass instances in the constructor of a
Python class, i.e.:
class MyClass:
def __init__(self, id, title=''):
import Zope
app = Zope.app()
ob = app.Control_Panel.Products.MyProduct.MyZClass('newId')
ob.id = 'newId'
self._setObject('newId', ob)
# Do I need a get_transaction().abort() here? Will that not abort
# the wrong transaction?
app._p_jar.close()
...
> This gives you all kinds of benefits like undo and elimination of
> threading conflicts.
[snip]
Good stuff. Thanks, Shane.
> Shane
--Jeff
---
Jeff K. Hoffman 704.849.0731 x108
Chief Technology Officer mailto:jeff.hoffman@goingv.com
Going Virtual, L.L.C. http://www.goingv.com/