[Twisted-web] Re: Re: new nevow know-how needs...;-)

James Y Knight twisted-web@twistedmatrix.com
Sat, 6 Mar 2004 18:28:02 -0500


On Mar 6, 2004, at 5:03 PM, Stephen Waterbury wrote:
> Thanks, James -- I see now, and I appreciate your patience!  :)
> I must say that for me this is rather non-intuitive.

Well, how would you like it to work? It needs to support contextual 
data. Consider the following (actually working) example, which in my 
experience is more common:

from nevow import inevow, rend
class User:
   __implements__ = inevow.IContainer
   allowableAttrs = ('name', 'password')

   def __init__(self, name, password):
     self.name=name
     self.password=password

   def child(self, context, name):
     if name in self.allowableAttrs:
       return getattr(self, name)

class MyPage(rend.Page):
   def data_users(self, context, data):
     return (User('James Knight', 'twiddle'), User('Matt Goodall', 
'twoddle'), User('Bogus User', '1'))
   def data_title(self, context, data):
     return "My Title"

   docFactory = rend.xmlstr(
     """<ul nevow:data="users" nevow:render="sequence">
          <li nevow:pattern="item">
            Name: <span nevow:data="name" nevow:render="string" />
            Password: <span nevow:data="password" nevow:render="string" 
/>
          </li>
        </ul>""")

from twisted.application import service,internet
from nevow import appserver

application = service.Application("disktemplates")
site = appserver.NevowSite(MyPage())
internet.TCPServer(8080, site).setServiceParent(application)