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
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
def _validators_registered(self): try: get_validator(u'is_blanket') except UnknownValidator: return False return True
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}
def wrapper(): kwargs = {arg: get_validator(arg) for arg in args} return fn(**kwargs)
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}
def wrapper(): kwargs = { arg: get_validator(arg) for arg in args} return fn(**kwargs)