def datastore_validate(self, context, data_dict, fields_types): column_names = fields_types.keys() fields = data_dict.get('fields') if fields: data_dict['fields'] = list(set(fields) - set(column_names)) filters = data_dict.get('filters', {}) for key in filters.keys(): if key in fields_types: del filters[key] q = data_dict.get('q') if q: if isinstance(q, basestring): del data_dict['q'] elif isinstance(q, dict): for key in q.keys(): if key in fields_types and isinstance(q[key], basestring): del q[key] language = data_dict.get('language') if language: if isinstance(language, basestring): del data_dict['language'] plain = data_dict.get('plain') if plain: if isinstance(plain, bool): del data_dict['plain'] distinct = data_dict.get('distinct') if distinct: if isinstance(distinct, bool): del data_dict['distinct'] sort_clauses = data_dict.get('sort') if sort_clauses: invalid_clauses = [ c for c in sort_clauses if not _parse_sort_clause(c, fields_types) ] data_dict['sort'] = invalid_clauses limit = data_dict.get('limit') if limit: is_positive_int = datastore_helpers.validate_int(limit, non_negative=True) is_all = isinstance(limit, basestring) and limit.lower() == 'all' if is_positive_int or is_all: del data_dict['limit'] offset = data_dict.get('offset') if offset: is_positive_int = datastore_helpers.validate_int(offset, non_negative=True) if is_positive_int: del data_dict['offset'] return data_dict
def datastore_validate(self, context, data_dict, fields_types): column_names = fields_types.keys() filters = data_dict.get('filters', {}) for key in filters.keys(): if key in fields_types: del filters[key] q = data_dict.get('q') if q: if isinstance(q, string_types): del data_dict['q'] column_names.append(u'rank') elif isinstance(q, dict): for key in q.keys(): if key in fields_types and isinstance(q[key], string_types): column_names.append(u'rank ' + key) del q[key] fields = data_dict.get('fields') if fields: data_dict['fields'] = list(set(fields) - set(column_names)) language = data_dict.get('language') if language: if isinstance(language, string_types): del data_dict['language'] plain = data_dict.get('plain') if plain: if isinstance(plain, bool): del data_dict['plain'] distinct = data_dict.get('distinct') if distinct: if isinstance(distinct, bool): del data_dict['distinct'] sort_clauses = data_dict.get('sort') if sort_clauses: invalid_clauses = [ c for c in sort_clauses if not _parse_sort_clause( c, fields_types ) ] data_dict['sort'] = invalid_clauses limit = data_dict.get('limit') if limit: is_positive_int = datastore_helpers.validate_int(limit, non_negative=True) is_all = isinstance(limit, string_types) and limit.lower() == 'all' if is_positive_int or is_all: del data_dict['limit'] offset = data_dict.get('offset') if offset: is_positive_int = datastore_helpers.validate_int(offset, non_negative=True) if is_positive_int: del data_dict['offset'] return data_dict
def datastore_validate(self, context: Context, data_dict: dict[str, Any], fields_types: dict[str, str]): column_names = list(fields_types.keys()) filters = data_dict.get('filters', {}) for key in list(filters.keys()): if key in fields_types: del filters[key] q: Union[str, dict[str, Any], Any] = data_dict.get('q') if q: if isinstance(q, str): del data_dict['q'] column_names.append(u'rank') elif isinstance(q, dict): for key in list(q.keys()): if key in fields_types and isinstance(q[key], str): column_names.append(u'rank ' + key) del q[key] fields = data_dict.get('fields') if fields: data_dict['fields'] = list(set(fields) - set(column_names)) language = data_dict.get('language') if language: if isinstance(language, str): del data_dict['language'] plain = data_dict.get('plain') if plain: if isinstance(plain, bool): del data_dict['plain'] distinct = data_dict.get('distinct') if distinct: if isinstance(distinct, bool): del data_dict['distinct'] sort_clauses = data_dict.get('sort') if sort_clauses: invalid_clauses = [ c for c in sort_clauses if not _parse_sort_clause( c, fields_types ) ] data_dict['sort'] = invalid_clauses limit = data_dict.get('limit') if limit: is_positive_int = datastore_helpers.validate_int(limit, non_negative=True) is_all = isinstance(limit, str) and limit.lower() == 'all' if is_positive_int or is_all: del data_dict['limit'] offset = data_dict.get('offset') if offset: is_positive_int = datastore_helpers.validate_int(offset, non_negative=True) if is_positive_int: del data_dict['offset'] full_text = data_dict.get('full_text') if full_text: if isinstance(full_text, str): del data_dict['full_text'] return data_dict