On Jan 23, 2005, at 2:24 AM, Michael Hudson wrote:
Mary Gardiner <mary-twisted@puzzling.org> writes:
I've got a Page object that derives all its data from a dictionary, eg:
{ 'project_name': 'project', 'project_description': 'hello', # ... you get the idea }
What's a good way for the Page object to wrap that dictionary that doesn't involve doing this:
def data_name(self, ctx, data): return self.d['project_name']
def data_description(self, ctx, data): return self.d['project_description']
# and so on for every key in the dictionary
I vaguely recall that the equivalent of this used to be possible in Woven:
def data_project(self, ctx, data): return self.d
and then that the data items were accessible by (say) stan.directive("project/project_name"). This doesn't look like its supported in Nevow. Is this correct? What alternative designs are there for something like this?
Model path notation (/ and ..) are not yet supported by Nevow. But you don't need model path notation to do what you want. If all you want to do is pass a dict to the Page and have template directives locate data in that dict, you don't have to do anything at all: rend.Page( dict(one=1, two=2), docFactory=loaders.xmlstr( """<html xmlns:n="http://nevow.com/ns/nevow/0.1"> <div n:render="string" n:data="one" /> <span n:render="string" n:data="two" /> </html>""")).renderSynchronously() <html><div>1</div><span>2</span></html> Is it really that hard to figure out that things like this are possible? :-( dp