[Zope-dev] connecting server code to the ZODB

Florent Guillaume fg at nuxeo.com
Fri Nov 5 09:34:06 EST 2004


In article <2233.82.45.210.74.1098977827.squirrel at 82.45.210.74> you write:
> Hi,
> 
> I'm trying to figure out how to adjust Nikolay Kim's smtpserver code
> <http://cvs.sourceforge.net/viewcvs.py/collective/smtpserver/> so that
> objects within the ZODB can affect the way that messages are received
> (i.e. veto messages based on certain criteria in the first instance).
> 
> My problem is that I don't quite know how to get hold of the ZODB objects.
>  As far as I can tell, Nikolay's
> smtpserver.SMTPServer.SMTPChannel.process_message method uses
> ZServer.PubCore.handle to make the connection, but I don't really
> understand how this all works.
> 
> What I really want to be able to do from the server code is something like::
> 
>     root = magic_that_gets_me_zodb_root()

That magic is basically (from memory):

  import Zope
  Zope.startup()
  root = Zope.app()

But note that starting up a zope is slow, so you don't want to do that
very often.

Florent

>     account_manager = root['Control_Panel']['AccountManager']
>     account_manager.checkAccepts(msg)
> 
> I want calls like that to checkAccepts(msg) to be made a several points in
> the SMTP session - say after each of the SMTP commands RCPT, MAIL, DATA,
> etc.  I only mention that in case there are implications for some
> transaction jiggery-pokery (although I don't expect any of the
> checkAccepts() type calls to need to write to the ZODB).
> 
> Any pointers much appreciated.
> 
> 
> tim
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )
> 


-- 
Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com


More information about the Zope-Dev mailing list