Пример #1
0
def test_register_model():
    setup()
    app = App()
    root = Root()
    app.root_model = Root
    app.root_obj = root
    lookup = Lookup(ChainClassLookup(app, global_app))

    def get_model(id):
        model = Model()
        model.id = id
        return model

    register_root(app, Root, lambda: root)
    register_model(app, Model, '{id}', lambda model: {'id': model.id},
                   get_model)

    found, obj, stack = traject_consumer(app, parse_path('a'), lookup)
    assert obj.id == 'a'
    model = Model()
    model.id = 'b'
    request = get_request()
    request.lookup = lookup
    assert generic.path(request, model, lookup=lookup) == 'b'
    assert generic.base(model, lookup=lookup) is app
Пример #2
0
def traject_path(request, model):
    base = generic.base(model, lookup=request.lookup, default=None)
    if base is None:
        raise LinkError("cannot determine model base for %r" % model)
    traject = generic.traject(base, lookup=request.lookup, default=None)
    if traject is None:
        raise LinkError("cannot determine traject path info for base %r" %
                        base)
    return traject.get_path(model)
Пример #3
0
def traject_path(request, model):
    base = generic.base(model, lookup=request.lookup, default=None)
    if base is None:
        raise LinkError(
            "cannot determine model base for %r" % model)
    traject = generic.traject(base, lookup=request.lookup, default=None)
    if traject is None:
        raise LinkError(
            "cannot determine traject path info for base %r" % base)
    return traject.get_path(model)
Пример #4
0
def app_path(model, lookup):
    result = []
    while True:
        base = generic.base(model, lookup=lookup, default=None)
        if base is None:
            break
        traject = generic.traject(base, lookup=lookup)
        result.append(traject.path(model))
        model = base
    result.reverse()
    return '/'.join(result)
Пример #5
0
def test_register_root():
    app = App()
    root = Root()
    lookup = app.lookup()

    c = setup()
    c.configurable(app)
    c.commit()

    register_root(app, Root, lambda: root)
    assert generic.path(root, lookup=lookup) == ''
    assert generic.base(root, lookup=lookup) is app
Пример #6
0
def test_register_root():
    app = App()
    root = Root()
    app.root_model = Root
    app.root_obj = root
    lookup = Lookup(ChainClassLookup(app, global_app))

    register_root(app, Root, lambda: root)
    request = get_request()
    request.lookup = lookup
    assert generic.path(request, root, lookup=lookup) == ''
    assert generic.base(root, lookup=lookup) is app
Пример #7
0
def link(request, model):
    result = []
    lookup = request.lookup
    while True:
        path = generic.path(request, model, lookup=lookup)
        if path:
            result.append(path)
        model = generic.base(model, lookup=lookup, default=None)
        if model is None:
            break
        # XXX should switch lookup back to lookup of base model in order
        # to mimic what happens during path resolution
    result.reverse()
    return '/'.join(result)
Пример #8
0
def link(request, model):
    result = []
    lookup = request.lookup
    while True:
        path = generic.path(request, model, lookup=lookup)
        if path:
            result.append(path)
        model = generic.base(model, lookup=lookup, default=None)
        if model is None:
            break
        # XXX should switch lookup back to lookup of base model in order
        # to mimic what happens during path resolution
    result.reverse()
    return '/'.join(result)
Пример #9
0
def app_path(model, lookup):
    result = []
    while True:
        base = generic.base(model, lookup=lookup, default=None)
        # We cannot construct link at all, so this is an error.
        if base is None:
            raise LinkError()
        traject = generic.traject(base, lookup=lookup)
        result.append(traject.path(model))
        # If the base is an App, we cannot continue constructing link further.
        if isinstance(base, AppBase):
            break
        model = base
    result.reverse()
    return '/'.join(result)
Пример #10
0
def test_register_model():
    app = App()
    root = Root()
    lookup = app.lookup()

    def get_model(id):
        model = Model()
        model.id = id
        return model

    c = setup()
    c.configurable(app)
    c.commit()

    register_root(app, Root, lambda: root)
    register_model(app, Model, '{id}', lambda model: {'id': model.id},
                   get_model)

    obj, request = consume(app, 'a')
    assert obj.id == 'a'
    model = Model()
    model.id = 'b'
    assert generic.path(model, lookup=lookup) == 'b'
    assert generic.base(model, lookup=lookup) is app