Ejemplo n.º 1
0
def register_view(registry, model, view, render=None, permission=None,
                  predicates=None):
    if permission is not None:
        # instantiate permission class so it can be looked up using reg
        permission = permission()
    registration = View(view, render, permission)
    if predicates is not None:
        matcher = registry.exact(generic.view, (Request, model))
        if matcher is None:
            predicate_info = registry.exact('predicate_info', ())
            predicate_info.sort()
            matcher = PredicateMatcher(
                [predicate for (order, predicate) in predicate_info])
        matcher.register(predicates, registration)
        registration = matcher
    registry.register(generic.view, (Request, model), registration)
Ejemplo n.º 2
0
def get_predicate_registration(registry, model, predicates, registration):
    predicate_info = registry.exact('predicate_info', ())
    predicates = get_predicates_with_defaults(predicates, predicate_info)
    matcher = registry.exact(generic.view, (Request, model))
    if matcher is None:
        predicate_infos = predicate_info.values()
        predicate_infos.sort()
        matcher = PredicateMatcher(
            [predicate for (order, predicate) in predicate_infos])
    matcher.register(predicates, registration)
    for order, predicate in predicate_info.values():
        fallback = getattr(predicate, 'fallback', None)
        if fallback is None:
            continue
        if predicates[predicate.name] is ANY:
            continue
        p = predicates.copy()
        p[predicate.name] = ANY
        matcher.register(p, View(fallback, None, None))
    return matcher