def bibliography_results(request, config): """Fetch bibliography results""" db = DB(config.db_path + "/data/") if request.no_metadata: hits = db.get_all(db.locals["default_object_level"], request["sort_order"]) else: hits = db.query(sort_order=request["sort_order"], **request.metadata) if ( request.simple_bibliography == "all" ): # request from simple landing page report which gets all biblio in load order hits.finish() start = 1 end = len(hits) page_num = end else: start, end, page_num = page_interval(request.results_per_page, hits, request.start, request.end) bibliography_object = { "description": {"start": start, "end": end, "n": page_num, "results_per_page": request.results_per_page}, "query": dict([i for i in request]), "default_object": db.locals["default_object_level"], } results = [] result_type = "doc" for hit in hits[start - 1 : end]: citation_hrefs = citation_links(db, config, hit) metadata_fields = {} for metadata in db.locals["metadata_fields"]: metadata_fields[metadata] = hit[metadata] result_type = hit.object_type if request.simple_bibliography == "all": citation = citations(hit, citation_hrefs, config, report="simple_landing") else: citation = citations(hit, citation_hrefs, config, report="bibliography", result_type=result_type) if config.dictionary_bibliography is False or result_type == "doc": results.append( { "citation": citation, "citation_links": citation_hrefs, "philo_id": hit.philo_id, "metadata_fields": metadata_fields, "object_type": result_type, } ) else: context = get_text_obj(hit, config, request, db.locals["token_regex"], images=False) results.append( { "citation": citation, "citation_links": citation_hrefs, "philo_id": hit.philo_id, "metadata_fields": metadata_fields, "context": context, "object_type": result_type, } ) bibliography_object["results"] = results bibliography_object["results_length"] = len(hits) bibliography_object["query_done"] = hits.done bibliography_object["result_type"] = result_type return bibliography_object, hits
def kwic_results(request, config): """Fetch KWIC results""" db = DB(config.db_path + '/data/') hits = db.query(request["q"], request["method"], request["arg"], **request.metadata) start, end, n = page_interval(request.results_per_page, hits, request.start, request.end) kwic_object = { "description": { "start": start, "end": end, "results_per_page": request.results_per_page }, "query": dict([i for i in request]) } kwic_object['results'] = [] for hit in hits[start - 1:end]: kwic_result = kwic_hit_object(hit, config, db) kwic_object['results'].append(kwic_result) kwic_object['results_length'] = len(hits) kwic_object["query_done"] = hits.done return kwic_object
def concordance_results(request, config): """Fetch concordances results.""" db = DB(config.db_path + '/data/') if request.collocation_type: first_hits = db.query(request["q"], request["method"], request["arg"], **request.metadata) second_hits = db.query(request["left"], request["method"], request["arg"], **request.metadata) hits = CombinedHitlist(first_hits, second_hits) else: hits = db.query(request["q"], request["method"], request["arg"], sort_order=request["sort_order"], **request.metadata) start, end, page_num = page_interval(request['results_per_page'], hits, request.start, request.end) concordance_object = { "description": { "start": start, "end": end, "results_per_page": request.results_per_page }, "query": dict([i for i in request]), "default_object": db.locals['default_object_level'] } formatting_regexes = [] if config.concordance_formatting_regex: for pattern, replacement in config.concordance_formatting_regex: compiled_regex = re.compile(r'%s' % pattern) formatting_regexes.append((compiled_regex, replacement)) results = [] for hit in hits[start - 1:end]: citation_hrefs = citation_links(db, config, hit) metadata_fields = {} for metadata in db.locals['metadata_fields']: metadata_fields[metadata] = hit[metadata] citation = citations(hit, citation_hrefs, config, report="concordance") context = get_concordance_text(db, hit, config.db_path, config.concordance_length) if formatting_regexes: for formatting_regex, replacement in formatting_regexes: context = formatting_regex.sub(r'%s' % replacement, context) result_obj = { "philo_id": hit.philo_id, "citation": citation, "citation_links": citation_hrefs, "context": context, "metadata_fields": metadata_fields, "bytes": hit.bytes } results.append(result_obj) concordance_object["results"] = results concordance_object['results_length'] = len(hits) concordance_object["query_done"] = hits.done return concordance_object
def concordance_results(request, config): """Fetch concordances results.""" db = DB(config.db_path + '/data/') if request.collocation_type: first_hits = db.query(request["q"], request["method"], request["arg"], **request.metadata) second_hits = db.query(request["left"], request["method"], request["arg"], **request.metadata) hits = CombinedHitlist(first_hits, second_hits) else: hits = db.query(request["q"], request["method"], request["arg"], sort_order=request["sort_order"], **request.metadata) start, end, page_num = page_interval(request['results_per_page'], hits, request.start, request.end) concordance_object = { "description": {"start": start, "end": end, "results_per_page": request.results_per_page}, "query": dict([i for i in request]), "default_object": db.locals['default_object_level'] } formatting_regexes = [] if config.concordance_formatting_regex: for pattern, replacement in config.concordance_formatting_regex: compiled_regex = re.compile(r'%s' % pattern) formatting_regexes.append((compiled_regex, replacement)) results = [] for hit in hits[start - 1:end]: citation_hrefs = citation_links(db, config, hit) metadata_fields = {} for metadata in db.locals['metadata_fields']: metadata_fields[metadata] = hit[metadata] citation = citations(hit, citation_hrefs, config, report="concordance") context = get_concordance_text(db, hit, config.db_path, config.concordance_length) if formatting_regexes: for formatting_regex, replacement in formatting_regexes: context = formatting_regex.sub(r'%s' % replacement, context) result_obj = { "philo_id": hit.philo_id, "citation": citation, "citation_links": citation_hrefs, "context": context, "metadata_fields": metadata_fields, "bytes": hit.bytes } results.append(result_obj) concordance_object["results"] = results concordance_object['results_length'] = len(hits) concordance_object["query_done"] = hits.done return concordance_object
def kwic_results(request, config): """Fetch KWIC results""" db = DB(config.db_path + "/data/") hits = db.query(request["q"], request["method"], request["arg"], **request.metadata) start, end, n = page_interval(request.results_per_page, hits, request.start, request.end) kwic_object = { "description": {"start": start, "end": end, "results_per_page": request.results_per_page}, "query": dict([i for i in request]), } kwic_object["results"] = [] for hit in hits[start - 1 : end]: kwic_result = kwic_hit_object(hit, config, db) kwic_object["results"].append(kwic_result) kwic_object["results_length"] = len(hits) kwic_object["query_done"] = hits.done return kwic_object