[Zope3-Users] Re: Announcing zopeproject 0.4

Philipp von Weitershausen philipp at weitershausen.de
Mon Sep 17 08:10:36 EDT 2007


Michael Haubenwallner wrote:
> Philipp von Weitershausen schrieb:
>> zopeproject makes it easy to get started with a web application based on
>> Zope eggs, zc.buildout and WSGI/Paste. If you're not familiar with this
>> world yet, zopeproject is your easy entry to it. If you are, zopeproject
>> will save you lots of typing up the boilerplate.
> 
> Thank you for developing zopeproject, this is very useful.
> 
>> With zopeproject's approach, *your code* is the application. The web
>> application, to be precise. And it *happens* to use Zope. As a library::
>>
>>   +------------+           +-------------+          +---------+
>>   |WSGI gateway|  serves   |  your code  |   uses   |  Zope   |
>>   |  (server)  |  ------>  |(application)|   ---->  |libraries|
>>   +------------+           +-------------+          +---------+
>>
> 
> Now for that part - one of my use cases would be to allow XML-RPC access 
> only throughout the app. How would you setup the application with and 
> without security support, disabling all other protocols defined in the 
> publisher and the ZMI altogether ?

The PublicationRequestFactory in z.a.publication decides what to do with 
an incoming HTTP request. Based on configurable rules, it can 
instantiate the request type you like.

By default, your application generated with zopeproject includes 
z.a.zcmlfiles/configure.zcml right at the top of its conigure.zcml. 
z.a.zcmlfiles/configure.zcml in turn includes 
z.a.publication/configure.zcml which configures a bunch of default 
rules, including those for Browser, HTTP/DAV and XMLRPC requests. You'll 
basically have to disable those if you just want XMLRPC.

How do you do that? First of all, get rid of

   <include package="zope.app.zcmlfiles" />

in your package's configure.zcml. Now you're not getting z.a.publication 
anymore, but you're obviously missing a lot of other useful stuff which 
you'll likely have to add to your package's configure.zcml manually. 
This is a try-and-error procedure; it also depends on how much stuff you 
actually want. This may take some time trying out, but in the end you're 
very flexible about what you're loading and what not.

Then, you'll obviously have to add back a rule for the 
PublicationRequestFactory to instantiate XMLRPC requests. If your app 
should only ever do XMLRPC, it's simple: configure the rule to always 
create an XMLRPC request.


Basically, in the end you'll have to do some peeking in 
z.a.zcmlfiles/configure.zcml and z.a.publication/configure.zcml and 
selectively copy the stuff you want to your package's configure.zcml.

Btw, if you manage to get it working, please share your results. I'd be 
interested in whether it's as straight-forward as I'd like it to be with 
zopeproject...


-- 
http://worldcookery.com -- Professional Zope documentation and training


More information about the Zope3-users mailing list