示例#1
0
def _get_root_extension_acl(context: IResource, registry: Registry) -> []:
    acm_cstruct = registry.queryAdapter(context, IRootACMExtension)
    if acm_cstruct is None:
        return []
    else:
        acm = ACM().deserialize(acm_cstruct)
        acl = acm_to_acl(acm)
        return acl
示例#2
0
def get_input_widget(
    registry: Registry,
    node: ColanderNode,
    node_type: Optional[colander.SchemaType] = None,
) -> Optional[InputWidget]:
    node_type = node_type or node.typ
    converter: Optional[InputConverter] = registry.queryAdapter(
        node_type, interfaces.ISchemaNodeToInputWidget)
    if converter:
        widget = converter(registry, node, node_type)
        if widget:
            widget = _try_convert_to_select_input(registry, widget, node)
        return widget
示例#3
0
def convert_validators(
        registry: Registry,
        validator: Optional[ColanderValidator],
) -> Generator[Validator, Any, None]:
    if validator is None:
        return

    if isfunction(validator):
        adapter_name = f'{validator.__module__}.{validator.__qualname__}'
        validator = _FunctionBasedValidator(validator)
    else:
        adapter_name = ''

    converter: Optional[ValidatorConverter] = registry.queryAdapter(
        validator,
        interfaces.IValidatorConverter,
        name=adapter_name,
    )
    if converter:
        for v in converter(registry, validator):
            if v is not None:
                yield v