def gtitem_json(request, gtbibid): try: bibid = db.get_bibid_from_gtid(gtbibid) if bibid: return redirect('item_json', bibid=bibid) else: bib_data = voyager.get_z3950_bib_data('b' + gtbibid[1:], 'GT') if not bib_data: return HttpResponse('{}', content_type='application/json', status=404) bib_data['holdings'] = voyager.get_holdings(bib_data, 'GT', False) bib_data['openurl'] = _openurl_dict(request) bib_data['citation_json'] = citation_json(request) bib_encoded = unicode_data(bib_data) return HttpResponse(json.dumps(bib_encoded, default=_date_handler, indent=2), content_type='application/json') raise Http404 except DatabaseError: logger.exception('unable to render gtbibid json: %s' % gtbibid) return error500(request)
def gtitem(request, gtbibid): try: bibid = db.get_bibid_from_gtid(gtbibid) if bibid: return redirect('item', bibid=bibid) else: bib = voyager.get_z3950_bib_data(gtbibid[1:], 'GT') if bib is None: return render(request, '404.html', {'num': gtbibid, 'num_type': 'BIB ID'}, status=404) bib['openurl'] = _openurl_dict(request) bib['citation_json'] = citation_json(request) # Ensure bib data is ours if possible if not bib['LIBRARY_NAME'] == settings.PREF_LIB: for alt_bib in bib['BIB_ID_LIST']: if alt_bib['LIBRARY_NAME'] == settings.PREF_LIB: return item(request, alt_bib['BIB_ID']) holdings = voyager.get_holdings(bib, 'GT', False) if holdings: holdings = strip_bad_holdings(holdings) show_wrlc_link = False ours, theirs, shared = splitsort(callnumsort(enumsort( holdings))) holdings = elecsort(availsort(ours)) \ + elecsort(availsort(shared)) \ + libsort(elecsort(availsort(theirs), rev=True)) return render(request, 'item.html', { 'bibid': bibid, 'bib': bib, 'holdings': holdings, 'link': bib.get('LINK', [])[9:], 'show_wrlc_link': show_wrlc_link, 'non_wrlc_item': True }) return render(request, '404.html', {'num': gtbibid, 'num_type': 'Georgetown BIB ID'}, status=404) except DatabaseError: logger.exception('unable to render gtbibid: %s' % gtbibid) return error500(request)