def validate_keywords(item, errors):
    """
	Checks keywords for their allowness and correct inheritance
	"""
    keywords = set(item.get("keywords") or {})
    if keywords is None:
        return

    unallowed_keywords = (keywords - config.parser.keywords)
    for keyword in unallowed_keywords:
        errors.add("Keyword [{keyword}] is unallowed".format(keyword=keyword))
    for keyword in keywords:
        parent_keyword = utils.extract_parent_keyword(keyword)
        if parent_keyword not in keywords:
            errors.add(
                "Parent keyword [{parent_keyword} is missing for keyword [{keyword}]"
                .format(parent_keyword=parent_keyword, keyword=keyword))
    if ("useless" in keywords) and (len(keywords) != 1):
        errors.add("Keyword [useless] can't be combined with other keywords")
示例#2
0
def extract_keywords_from_request(param_name, default=_DefaultValueKeywords):
    """
	Extracts keywords, validates them according to config,
	inserts parent keywords if needed.
	Returns alphabetically sorted list of keywords.
	"""
    result = extract_list_from_request(param_name, default)
    if result is _DefaultValueKeywords:
        flask.abort(http.client.BAD_REQUEST, translate_wrong_error(param_name))
    if result is default:
        return result

    result_keywords = set()
    for keyword in result:
        if keyword not in config.parser.keywords:
            flask.abort(http.client.BAD_REQUEST, translate_wrong_error(param_name) + keyword)
        result_keywords.add(keyword)
        parent_keyword = utils.extract_parent_keyword(keyword)
        result_keywords.add(parent_keyword)
    return sorted(result_keywords)
def extract_keywords_from_request(param_name, default=_DefaultValueKeywords):
    """
	Extracts keywords, validates them according to config,
	inserts parent keywords if needed.
	Returns alphabetically sorted list of keywords.
	"""
    result = extract_list_from_request(param_name, default)
    if result is _DefaultValueKeywords:
        flask.abort(http.client.BAD_REQUEST, translate_wrong_error(param_name))
    if result is default:
        return result

    result_keywords = set()
    for keyword in result:
        if keyword not in config.parser.keywords:
            flask.abort(http.client.BAD_REQUEST,
                        translate_wrong_error(param_name) + keyword)
        result_keywords.add(keyword)
        parent_keyword = utils.extract_parent_keyword(keyword)
        result_keywords.add(parent_keyword)
    return sorted(result_keywords)
示例#4
0
def check_keywords(item, errors):
	"""
	Checks keywords for their allowness and correct inheritance
	"""
	keywords = set(item.get("keywords") or {})
	if keywords is None:
		return

	unallowed_keywords = (keywords - config.parser.keywords)
	for keyword in unallowed_keywords:
		errors.add("Keyword [{keyword}] is unallowed".format(
			keyword=keyword
		))
	for keyword in keywords:
		parent_keyword = utils.extract_parent_keyword(keyword)
		if parent_keyword not in keywords:
			errors.add("Parent keyword [{parent_keyword} is missing for keyword [{keyword}]".format(
				parent_keyword=parent_keyword,
				keyword=keyword
			))
	if ("useless" in keywords) and (len(keywords) != 1):
		errors.add("Keyword [useless] can't be combined with other keywords")