def load(S): for line in S.split('\n'): line = line.strip() if line and not line.startswith('#'): (a, o , i) = line.split() print a, o, i compy.registerAdapter(a,o,i)
def load(S): for line in S.split('\n'): line = line.strip() if line and not line.startswith('#'): (a, o , i) = line.split() a = reflect.namedAny(a) o = reflect.namedAny(o) i = reflect.namedAny(i) compy.registerAdapter(a,o,i)
from nevow import compy as components, tags as T, inevow, stan from pollen.hierarchy import nodes from zope.interface import Attribute # Create and Register Adapter for Dict to Node and Node to Node class INode(components.Interface): children = Attribute( 'children' ) class DictNode(components.Adapter): children = property(lambda self: self.original.get('children',None)) components.registerAdapter(DictNode, dict, INode) class HierarchyNode(components.Adapter): children = property(lambda self: self.original.children) components.registerAdapter(HierarchyNode, nodes.Node, INode) # node renderer function returning stan tags def render(ctx, data): def render_children(ctx, data): yield [T.invisible(data=child, render=render_node) for child in data ] def render_node(ctx, data): tag = T.li[item()] children = INode(data).children if children: tag[T.ul[render_children(ctx, children)]]
def renderLocalized(self, request): # setLocaleFromRequest(request) return self.original.render(request) def renderHTTP(self, ctx): request = inevow.IRequest(ctx) if self.real_prepath_len is not None: path = request.postpath = request.prepath[self.real_prepath_len:] del request.prepath[self.real_prepath_len:] result = defer.maybeDeferred(self.renderLocalized, request).addCallback( self._handle_NOT_DONE_YET, request) return result compy.registerAdapter(eXeResourceAdapter, resource.IResource, inevow.IResource) compy.registerAdapter(eXeResourceAdapter, resource.IResource, inevow.IResource) class eXeRequest(appserver.NevowRequest): def __init__(self, *args, **kw): appserver.NevowRequest.__init__(self, *args, **kw) self.locale = None def gotPageContext(self, pageContext): # request = inevow.IRequest(pageContext) # self.locale = setLocaleFromRequest(request) appserver.NevowRequest.gotPageContext(self, pageContext) def getSession(self, sessionInterface=None):
class BookmarkView(compy.Adapter): """ Render a full view of a Bookmark. """ __implements__ = inevow.IRenderer attrs = 'name', 'url' def rend(self, data): return T.div( _class="View bookmark")[T.p['Bookmark'], T.dl[[(T.dt[attr], T.dd[getattr(self.original, attr)]) for attr in self.attrs]]] # register the rendering adapters (could be done from a config textfile) compy.registerAdapter(PersonView, Person, inevow.IRenderer) compy.registerAdapter(BookmarkView, Bookmark, inevow.IRenderer) # some example data instances for the 'application' objs = [ Person('Valentino', 'Volonghi', 'dialtone'), Person('Matt', 'Goodall', 'mg'), Bookmark('Nevow', 'http://www.nevow.com'), Person('Alex', 'Martelli', 'aleax'), Bookmark('Alex', 'http://www.aleax.it/'), Bookmark('Twisted', 'http://twistedmatrix.com/'), Bookmark('Python', 'http://www.python.org'), ] # a simple Page that renders a list of objects class Page(rend.Page):
for attr in self.attrs] ] ] class BookmarkView(compy.Adapter): """ Render a full view of a Bookmark. """ __implements__ = inevow.IRenderer attrs = 'name', 'url' def rend(self, data): return T.div(_class="View bookmark") [ T.p['Bookmark'], T.dl[ [(T.dt[attr], T.dd[getattr(self.original, attr)]) for attr in self.attrs] ] ] # register the rendering adapters (could be done from a config textfile) compy.registerAdapter(PersonView, Person, inevow.IRenderer) compy.registerAdapter(BookmarkView, Bookmark, inevow.IRenderer) # some example data instances for the 'application' objs = [ Person('Valentino', 'Volonghi', 'dialtone'), Person('Matt', 'Goodall', 'mg'), Bookmark('Nevow', 'http://www.nevow.com'), Person('Alex', 'Martelli', 'aleax'), Bookmark('Alex', 'http://www.aleax.it/'), Bookmark('Twisted', 'http://twistedmatrix.com/'), Bookmark('Python', 'http://www.python.org'), ] # a simple Page that renders a list of objects class Page(rend.Page): def render_item(self, ctx, data): return inevow.IRenderer(data)
class LDAPEntryContainer(object): implements(inevow.IContainer) def __init__(self, original): self.original = original def child(self, context, name): if name == 'dn': return self.original.dn elif name == 'attributes': return _DictLike(self.original) else: return None compy.registerAdapter(LDAPEntryContainer, ldapsyntax.LDAPEntryWithClient, inevow.IContainer) def dnSerializer(original, context): return flat.serialize(str(original), context) flat.registerFlattener(dnSerializer, distinguishedname.DistinguishedName) def entrySerializer(original, context): ul = tags.ul() for a, l in original.items(): if len(l) == 0: ul[tags.li[a, ': none']] elif len(l) == 1:
return authenticated request = inevow.IRequest(ctx) try: unsafe = request.getCookie(COOKIE_KEY) except KeyError: return '' try: address = EmailAddress().coerce(unsafe, None) except annotate.InputError: return '' except annotate.ValidateError: return '' return address compy.registerAdapter(_remembered, context.RequestContext, IEmailAddress) class IAuthenticatedEmailAddress(Interface): pass def _authenticated(ctx): sess = inevow.ISession(ctx) addr = sess.getComponent(IAuthenticatedEmailAddress) # None is special, need to return something else for "not known". if addr is None: return '' return addr compy.registerAdapter(_authenticated, context.RequestContext, IAuthenticatedEmailAddress)
ctx = context.WovenContext(parent=ctx) self.assertEquals( ctx.locateSlotData('foo'), 'bar') def test_negativeSlots(self): ctx = context.WovenContext() self.assertRaises(KeyError, ctx.locateSlotData, 'foo') def benchmark_longContextChainArg(self): from nevow import testutil ctx = context.RequestContext( tag=testutil.FakeRequest(args=dict(foo=["foo"], bar=["bar"]))) for x in range(5): ctx = TestContext(parent=ctx) for x in range(100): ctx = context.WovenContext(parent=ctx) loops = 1e4 before = time.clock() for x in xrange(loops): ignored = ctx.arg('foo') ignored = ctx.arg('bar') after = time.clock() self.recordStat({"arg/(cpu sec)": loops / (after - before)}) class TestContext(context.FactoryContext): """A target for registering adatpters. """ class IFoo(compy.Interface): """A dummy interface. """ dummyAdapter = lambda x: True compy.registerAdapter(dummyAdapter, TestContext, IFoo)
class eXeResourceAdapter(appserver.OldResourceAdapter): def renderLocalized(self, request): # setLocaleFromRequest(request) return self.original.render(request) def renderHTTP(self, ctx): request = inevow.IRequest(ctx) if self.real_prepath_len is not None: path = request.postpath = request.prepath[self.real_prepath_len:] del request.prepath[self.real_prepath_len:] result = defer.maybeDeferred(self.renderLocalized, request).addCallback( self._handle_NOT_DONE_YET, request) return result compy.registerAdapter(eXeResourceAdapter, resource.IResource, inevow.IResource) compy.registerAdapter(eXeResourceAdapter, resource.IResource, inevow.IResource) class eXeRequest(appserver.NevowRequest): def __init__(self, *args, **kw): appserver.NevowRequest.__init__(self, *args, **kw) self.locale = None def gotPageContext(self, pageContext): # request = inevow.IRequest(pageContext) # self.locale = setLocaleFromRequest(request) appserver.NevowRequest.gotPageContext(self, pageContext)
l.reverse() return l else: return accessors.ListContainer.child(self, context, name) def __iter__(self): return iter(self.original) class FeedContainer(accessors.ObjectContainer): def child(self, ctx, name): if name == 'entries': return EntrySetContainer(self.original.entries) else: return accessors.ObjectContainer.child(self, ctx, name) compy.registerAdapter(FeedContainer, IFeed, inevow.IContainer) class IText(Interface): #### required dom = Attribute("DOM tree of document ready to be inlined.") invariant(required('dom')) def flattenIText(orig, ctx): assert orig.dom.nodeType == orig.dom.ELEMENT_NODE assert orig.dom.namespaceURI == 'http://www.w3.org/1999/xhtml' assert orig.dom.nodeName == 'div' for node in orig.dom.childNodes: yield tags.xml(node.toxml()) flat.registerFlattener(flattenIText, IText)
## Do some factory contexts ctx = TestContext(parent=ctx) for x in range(100): ## Do a bunch of crap ctx = context.WovenContext(parent=ctx) ## Look for some request arguments loops = 1e4 before = time.clock() for x in xrange(loops): ignored = ctx.arg('foo') ignored = ctx.arg('bar') after = time.clock() self.recordStat({"arg/(cpu sec)": loops / (after - before)}) class TestContext(context.FactoryContext): """A target for registering adatpters. """ class IFoo(compy.Interface): """A dummy interface. """ dummyAdapter = lambda x: True compy.registerAdapter(dummyAdapter, TestContext, IFoo)
connected to the session. Attributes: portals - dictionary of portal, portal detail pairs """ class PortalRecorder(compy.Adapter): __implements__ = IPortalRecorder, def __init__(self, *args): compy.Adapter.__init__(self, *args) self.portals = {} compy.registerAdapter(PortalRecorder, Session, IPortalRecorder) def nomind(*args): return None class SessionWrapper: """I provide session-based authentication for web aspects of an application. """ __implements__ = inevow.IResource sessionCookieName = 'nevow_session' sessionManager = _defaultSessionManager def __init__(self, portal, sessionCookieName=None, sessionManager=None, mindFactory=None): self.portal = portal
def load(S): for line in S.split('\n'): line = line.strip() if line and not line.startswith('#'): (a, o, i) = line.split() compy.registerAdapter(a, clean(o), i)