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")
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 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")