Пример #1
0
def collect_prefix_validate(prefix, *validator_names):
    """
    Return a validator that will collect top-level keys starting with
    prefix then apply validator_names to each one. Results are moved
    to a dict under the prefix name, with prefix removed from keys
    """
    validator_fns = [logic.get_validator(v) for v in validator_names]

    def prefix_validator(key, data, errors, context):
        out = {}
        extras = data.get(('__extras',), {})

        # values passed as lists of dicts will have been flattened into __junk
        junk = df.unflatten(data.get(('__junk',), {}))
        for field_name in junk:
            if not field_name.startswith(prefix):
                continue
            extras[field_name] = junk[field_name]

        for field_name in list(extras):
            if not field_name.startswith(prefix):
                continue
            data[(field_name,)] = extras.pop(field_name)
            for v in validator_fns:
                try:
                    df.convert(v, (field_name,), data, errors, context)
                except df.StopOnError:
                    break
            out[field_name[len(prefix):]] = data.pop((field_name,))

        data[(prefix,)] = out

    return prefix_validator
    def update_config_schema(self, config_schema):

        ignore_missing = logic.get_validator("ignore_missing")

        config_schema.update({
            # This is an existing CKAN core configuration option, we are just
            # making it available to be editable at runtime
            "partner1_link": [ignore_missing],
            "partner1_logo": [ignore_missing],
            "partner2_link": [ignore_missing],
            "partner2_logo": [ignore_missing],
            "partner3_link": [ignore_missing],
            "partner3_logo": [ignore_missing],
            "partner4_link": [ignore_missing],
            "partner4_logo": [ignore_missing],
            "partner5_link": [ignore_missing],
            "partner5_logo": [ignore_missing],
            "partner6_link": [ignore_missing],
            "partner6_logo": [ignore_missing],
            "partner7_link": [ignore_missing],
            "partner7_logo": [ignore_missing],
            "partner8_link": [ignore_missing],
            "partner8_logo": [ignore_missing],
            "facebook_url": [ignore_missing],
            "twitter_url": [ignore_missing],
            "instagram_url": [ignore_missing],
            "linkedIn_url": [ignore_missing],
        })

        return config_schema
Пример #3
0
def _validators_from_string(s: str) -> list[Validator]:
    """
    convert a schema validators string to a list of validators
    e.g. "if_empty_same_as(name) unicode" becomes:
    [if_empty_same_as("name"), unicode]
    """
    from ckan.logic import get_validator

    out = []
    parts = s.split()
    for p in parts:
        if "(" in p and p[-1] == ")":
            name, args = p.split("(", 1)
            args: Any = args[:-1].split(",")  # trim trailing ')', break up
            v = get_validator(name)(*args)
        else:
            v = get_validator(p)
        out.append(v)
    return out
Пример #4
0
 def _validators_registered(self):
     try:
         get_validator(u'is_blanket')
     except UnknownValidator:
         return False
     return True
Пример #5
0
def create_schema_for_required_keys(keys):
    ''' helper function that creates a schema definition where
    each key from keys is validated against ``not_missing``.
    '''
    not_missing = get_validator('not_missing')
    return {x: [not_missing] for x in keys}
Пример #6
0
 def wrapper():
     kwargs = {arg: get_validator(arg) for arg in args}
     return fn(**kwargs)
Пример #7
0
def create_schema_for_required_keys(keys):
    ''' helper function that creates a schema definition where
    each key from keys is validated against ``not_missing``.
    '''
    not_missing = get_validator('not_missing')
    return {x: [not_missing] for x in keys}
Пример #8
0
 def wrapper():
     kwargs = {
         arg: get_validator(arg)
         for arg in args}
     return fn(**kwargs)