(builder, cur, alt, lang, limit)
| 68 | |
| 69 | |
| 70 | def _process_search_results(builder, cur, alt, lang, limit): |
| 71 | mapping = _mapping_from_cursor(cur) |
| 72 | rv = [] |
| 73 | |
| 74 | files_needed = set() |
| 75 | |
| 76 | for path, infos in mapping.items(): |
| 77 | info = _find_best_info(infos, alt, lang) |
| 78 | if info is None: |
| 79 | continue |
| 80 | |
| 81 | for parent in _iter_parents(path): |
| 82 | if parent not in mapping: |
| 83 | files_needed.add(parent) |
| 84 | |
| 85 | rv.append(info) |
| 86 | if len(rv) == limit: |
| 87 | break |
| 88 | |
| 89 | if files_needed: |
| 90 | cur.execute( |
| 91 | """ |
| 92 | select path, alt, lang, type, title |
| 93 | from source_info |
| 94 | where path in (%s) |
| 95 | """ |
| 96 | % ", ".join(["?"] * len(files_needed)), |
| 97 | list(files_needed), |
| 98 | ) |
| 99 | mapping.update(_mapping_from_cursor(cur)) |
| 100 | |
| 101 | for info in rv: |
| 102 | info["parents"] = _build_parent_path(info["path"], mapping, alt, lang) |
| 103 | |
| 104 | return rv |
| 105 | |
| 106 | |
| 107 | def find_files(builder, query, alt=PRIMARY_ALT, lang=None, limit=50, types=None): |
no test coverage detected