[Repoze-dev] obob example...
Chris McDonough
chrism at plope.com
Wed Sep 12 00:31:56 UTC 2007
I was typing this to Mike, but I think this is useful enough to send
to the list.
What we're aiming for is a world where a hello world app that uses
obob might look something like this:
def helloworld():
return 'hello world!'
root = {'helloworld':helloworld}
def get_root(request):
return root
Configuration will register get_root as the callable for obob to get
the root:
[application:helloworld]
use = egg:repoze.obob#publisher
root_factory = helloworld:get_root
Then from a web browser, if you visit http://localhost:8080/
helloworld, you would see:
hello world!
obob will call str() against an object returned or may call some
other method on an object returned to it if it "implements some
interface" (yet to be decided). obob will guess at a content type if
you don't set one (in this case, 'text/plain'). If you do want to
set one, you will be able to get a "response" object (perhaps as a
thread local via repoze.obob.get_response()) and set a content type
or other headers using the response object API from anywhere in the
code. And so forth.
By default, obob will traverse the graph using '__getitem__' against
each object during path traversal and it will use __call__ against
the returned object. You will be able to register alternate
traversers and callers that do different things based on whatever
policy you decide.
- C
_______________________________________________
Repoze-dev mailing list
Repoze-dev at lists.repoze.org
http://lists.repoze.org/mailman/listinfo/repoze-dev
More information about the Repoze-dev
mailing list