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)
Beispiel #3
0
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)]]
Beispiel #4
0
    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):
Beispiel #5
0
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)
Beispiel #7
0
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:
Beispiel #8
0
        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)
Beispiel #9
0
        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)
Beispiel #10
0
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)
Beispiel #11
0
            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)
Beispiel #12
0
            ## 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)
Beispiel #13
0
    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
Beispiel #14
0
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)