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 generate_text_object(request, config, note=False): """Return text object given an philo_id""" # verify this isn't a page ID or if this is a note if len(request.philo_id.split()) == 9 and note is not True: width = 9 else: width = 7 db = DB(config.db_path + '/data/', width=width) if note: target = request.target.replace('#', '') doc_id = request.philo_id.split()[0] + ' %' c = db.dbh.cursor() c.execute( 'select philo_id from toms where id=? and philo_id like ? limit 1', (target, doc_id)) philo_id = c.fetchall()[0]['philo_id'].split()[:7] obj = db[philo_id] else: try: obj = db[request.philo_id] except ValueError: obj = db[' '.join(request.path_components)] philo_id = obj.philo_id if width != 9: while obj['philo_name'] == '__philo_virtual' and obj[ "philo_type"] != "div1": philo_id.pop() obj = db[philo_id] philo_id = list(obj.philo_id) while int(philo_id[-1]) == 0: philo_id.pop() text_object = { "query": dict([i for i in request]), "philo_id": ' '.join([str(i) for i in philo_id]) } text_object['prev'] = neighboring_object_id(db, obj.prev, width) text_object['next'] = neighboring_object_id(db, obj.__next__, width) metadata_fields = {} for metadata in db.locals['metadata_fields']: metadata_fields[metadata] = obj[metadata] text_object['metadata_fields'] = metadata_fields if width != 9: citation_hrefs = citation_links(db, config, obj) else: doc_obj = db[obj.philo_id[0]] citation_hrefs = citation_links(db, config, doc_obj) citation = citations(obj, citation_hrefs, config, report="navigation") text_object['citation'] = citation text, imgs = get_text_obj(obj, config, request, db.locals["token_regex"], note=note) if config.navigation_formatting_regex: for pattern, replacement in config.navigation_formatting_regex: text = re.sub(r'%s' % pattern, '%s' % replacement, text) text_object['text'] = text text_object['imgs'] = imgs return text_object
def generate_text_object(request, config, note=False): """Return text object given an philo_id""" # verify this isn't a page ID or if this is a note if len(request.philo_id.split()) == 9 and note is not True: width = 9 else: width = 7 db = DB(config.db_path + '/data/', width=width) if note: target = request.target.replace('#', '') doc_id = request.philo_id.split()[0] + ' %' cursor = db.dbh.cursor() cursor.execute('select philo_id from toms where id=? and philo_id like ? limit 1', (target, doc_id)) philo_id = cursor.fetchall()[0]['philo_id'].split()[:7] obj = db[philo_id] else: try: obj = db[request.philo_id] except ValueError: obj = db[' '.join(request.path_components)] philo_id = obj.philo_id if width != 9: while obj['philo_name'] == '__philo_virtual' and obj["philo_type"] != "div1": philo_id.pop() obj = db[philo_id] philo_id = list(obj.philo_id) while int(philo_id[-1]) == 0: philo_id.pop() text_object = {"query": dict([i for i in request]), "philo_id": ' '.join([str(i) for i in philo_id])} text_object['prev'] = neighboring_object_id(db, obj.prev, width) text_object['next'] = neighboring_object_id(db, obj.__next__, width) metadata_fields = {} for metadata in db.locals['metadata_fields']: metadata_fields[metadata] = obj[metadata] text_object['metadata_fields'] = metadata_fields if width != 9: citation_hrefs = citation_links(db, config, obj) citation = citations(obj, citation_hrefs, config, report="navigation") else: db = DB(config.db_path + '/data/', width=7) doc_obj = db[obj.philo_id[0]] citation_hrefs = citation_links(db, config, doc_obj) citation = citations(doc_obj, citation_hrefs, config, report="navigation") text_object['citation'] = citation text, imgs = get_text_obj(obj, config, request, db.locals["token_regex"], note=note) if config.navigation_formatting_regex: for pattern, replacement in config.navigation_formatting_regex: text = re.sub(r'%s' % pattern, '%s' % replacement, text) text_object['text'] = text text_object['imgs'] = imgs return text_object