def matches(id, other_id): collection = get_db_collection(id) other = get_db_collection(other_id) parser = QueryParser(request.args, request.authz, limit=10) q = Match.find_by_collection(collection.id, other.id) result = DatabaseQueryResult(request, q, parser=parser, schema=MatchSchema) return jsonify(result)
def matches(collection_id, other_id): collection = get_db_collection(collection_id) other = get_db_collection(other_id) parser = QueryParser(request.args, request.authz) q = Match.find_by_collection(collection.id, other.id) result = DatabaseQueryResult(request, q, parser=parser) return MatchSerializer.jsonify_result(result)
def matches(id, other_id): collection = obj_or_404(Collection.by_id(id)) require(request.authz.can_read(collection.id)) require(request.authz.can_read(other_id)) parser = QueryParser(request.args, request.authz, limit=10) q = Match.find_by_collection(collection.id, other_id) result = MatchQueryResult(request, q, parser=parser, schema=MatchSchema) return jsonify(result)
def matches(id, other_id): collection = get_db_collection(id) record_audit(Audit.ACT_COLLECTION, id=collection.id) other = get_db_collection(other_id) record_audit(Audit.ACT_COLLECTION, id=other.id) parser = QueryParser(request.args, request.authz) q = Match.find_by_collection(collection.id, other.id) result = DatabaseQueryResult(request, q, parser=parser, schema=MatchSchema) return jsonify(result)
def matches(collection_id, other_id): collection = get_db_collection(collection_id) record_audit(Audit.ACT_COLLECTION, id=collection.id) other = get_db_collection(other_id) record_audit(Audit.ACT_COLLECTION, id=other.id) parser = QueryParser(request.args, request.authz) q = Match.find_by_collection(collection.id, other.id) result = DatabaseQueryResult(request, q, parser=parser) return MatchSerializer.jsonify_result(result)
def matches(collection_id, other_id): """ --- get: summary: Fetch cross-reference matches between collections description: >- Fetch cross-reference matches between 2 collections with ids `collection_id` and `other_id` parameters: - in: path name: collection_id required: true schema: type: integer - in: path name: other_id required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object allOf: - $ref: '#/components/schemas/QueryResponse' properties: results: type: array items: $ref: '#/components/schemas/XrefMatch' tags: - Xref - Collection """ collection = get_db_collection(collection_id) other = get_db_collection(other_id) parser = QueryParser(request.args, request.authz) q = Match.find_by_collection(collection.id, other.id) result = DatabaseQueryResult(request, q, parser=parser) return MatchSerializer.jsonify_result(result)
def generate_matches_sheet(workbook, sheet, collection, match_collection, authz, links=True, one_sheet=False, offset=0, limit=1000): from aleph.views.serializers import MatchSchema if one_sheet: sheet_label = "All matches (top %s per collection)" % limit else: sheet_label = "%s (top %s)" % (match_collection.label, limit) sheet.set_zoom(125) parser = QueryParser({}, authz, limit=limit) q_match = Match.find_by_collection(collection.id, match_collection.id) matches = MatchQueryResult({}, q_match, parser=parser, schema=MatchSchema) if offset < 3: sheet.write(0, 0, '', workbook.header_format) sheet.write(1, 0, 'Score', workbook.header_format) sheet.merge_range(0, 1, 0, 4, collection.label, workbook.header_format) sheet.write(1, 1, 'Name', workbook.header_format) sheet.write(1, 2, 'Type', workbook.header_format) sheet.write(1, 3, 'Country', workbook.header_format) sheet.write(1, 4, 'Source URL', workbook.header_format) sheet.merge_range(0, 5, 0, 8, sheet_label, workbook.header_format) sheet.write(1, 5, 'Name', workbook.header_format) sheet.write(1, 6, 'Type', workbook.header_format) sheet.write(1, 7, 'Country', workbook.header_format) if one_sheet: sheet.write(1, 8, 'Collection', workbook.header_format) sheet.freeze_panes(2, 0) sheet.autofilter(1, 1, 2 + len(matches.results), 8) widths = {} for row, result in enumerate(matches.results, offset): sheet.write_number(row, 0, int(result.score)) name = result.entity.get('name') widths[1] = max(widths.get(1, 0), len(name)) if links: url = entity_url(result.entity_id) sheet.write_url(row, 1, url, workbook.link_format, name) else: sheet.write_string(row, 1, name) schema = model.get(result.entity['schema']) sheet.write_string(row, 2, schema.label) countries = ', '.join(sorted(result.entity.get('countries', []))) sheet.write_string(row, 3, countries.upper()) ent_props = result.entity.get('properties', {}) if (ent_props.get('sourceUrl') is not None): source_url = ', '.join(ent_props.get('sourceUrl')) else: source_url = '' sheet.write_string(row, 4, source_url) name = result.match.get('name') widths[5] = max(widths.get(5, 0), len(name)) if links: url = entity_url(result.match_id) sheet.write_url(row, 5, url, workbook.link_format, name) else: sheet.write_string(row, 5, name) schema = model.get(result.match['schema']) sheet.write_string(row, 6, schema.label) countries = ', '.join(sorted(result.match.get('countries', []))) sheet.write_string(row, 7, countries.upper()) if one_sheet: sheet.write_string(row, 8, match_collection.label) for idx, max_len in widths.items(): max_len = min(70, max(7, max_len + 1)) sheet.set_column(idx, idx, float(max_len)) return sheet