def page_ocr(request, lccn, date, edition, sequence): title, issue, page = _get_tip(lccn, date, edition, sequence) page_title = "%s, %s, %s" % (label(title), label(issue), label(page)) crumbs = create_crumbs(title, issue, date, edition, page) host = request.get_host() return render_to_response('page_text.html', dictionary=locals(), context_instance=RequestContext(request))
def title_marc(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = "MARC Bibliographic Record: %s" % label(title) page_name = "marc" crumbs = create_crumbs(title) return render_to_response('marc.html', dictionary=locals(), context_instance=RequestContext(request))
def issues_first_pages(request, lccn, page_number=1): title = get_object_or_404(models.Title, lccn=lccn) issues = title.issues.all() if not issues.count() > 0: raise Http404("No issues for %s" % title.display_name) first_pages = [] for issue in issues: # include both issue and page because in some cases # an issue exists which has no associated pages first_pages.append({'issue': issue, 'page': issue.first_page}) paginator = Paginator(first_pages, 20) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) # set page number variables if page.has_previous(): previous_page_number = int(page_number) - 1 if page.has_next(): next_page_number = int(page_number) + 1 page_title = 'Browse Issues: %s' % label(title) page_head_heading = "Browse Issues: %s" % title.display_name page_head_subheading = label(title) crumbs = create_crumbs(title) return render(request, 'issue_pages.html', locals())
def issues_title(request, lccn, year=None): title = get_object_or_404(models.Title, lccn=lccn) issues = title.issues.all() year_view, select_year_form = _create_year_form(issues, year, False) page_title = "Browse Issues: %s" % title.display_name page_name = "issues_title" crumbs = create_crumbs(title) return render(request, 'issues_title.html', locals())
def title_issues_calendar(request, lccn, year=None): title = get_object_or_404(models.Title, lccn=lccn) page_title = "Browse Issues: %s" % title.display_name page_name = "issues_title" # always display where a single title has multiple issues on a day display_multiple = True crumbs = create_crumbs(title) calendar = IssueCalendar(title, year) return render(request, 'title_issues_calendar.html', locals())
def issues_title(request, lccn, year=None): title = get_object_or_404(models.Title, lccn=lccn) issues = title.issues.all() year_view, select_year_form = _create_year_form(issues, year, False) page_title = "Browse Issues: %s" % title.display_name page_name = "issues_title" crumbs = create_crumbs(title) return render_to_response('issues_title.html', dictionary=locals(), context_instance=RequestContext(request))
def title_holdings(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = "Libraries that Have It: %s" % label(title) page_name = "holdings" crumbs = create_crumbs(title) holdings = title.holdings.select_related('institution').order_by('institution__name') return render_to_response('holdings.html', dictionary=locals(), context_instance=RequestContext(request))
def title_holdings(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = "Libraries that Have It: %s" % label(title) page_name = "holdings" crumbs = create_crumbs(title) holdings = title.holdings.select_related('institution').order_by( 'institution__name') return render(request, 'holdings.html', locals())
def title_holdings(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = "Libraries that Have It: %s" % label(title) page_name = "holdings" crumbs = create_crumbs(title) holdings = title.holdings.select_related('institution').order_by( 'institution__name') return render_to_response('holdings.html', dictionary=locals(), context_instance=RequestContext(request))
def page_print(request, lccn, date, edition, sequence, width, height, x1, y1, x2, y2): page = get_page(lccn, date, edition, sequence) title = get_object_or_404(models.Title, lccn=lccn) issue = page.issue page_title = "%s, %s, %s" % (label(title), label(issue), label(page)) crumbs = create_crumbs(title, issue, date, edition, page) host = request.get_host() image_credit = page.issue.batch.awardee.name path_parts = dict(lccn=lccn, date=date, edition=edition, sequence=sequence, width=width, height=height, x1=x1, y1=y1, x2=x2, y2=y2) url = urlresolvers.reverse('openoni_page_print', kwargs=path_parts) return render_to_response('page_print.html', dictionary=locals(), context_instance=RequestContext(request))
def issue_pages(request, lccn, date, edition, page_number=1): title = get_object_or_404(models.Title, lccn=lccn) _year, _month, _day = date.split("-") try: _date = datetime.date(int(_year), int(_month), int(_day)) except ValueError as e: raise Http404 try: issue = title.issues.filter(date_issued=_date, edition=edition).order_by("-created")[0] except IndexError as e: raise Http404 issue_pages = [] for page in issue.pages.all(): # include both issue and page because of how metadata # is being pulled in the template issue_pages.append({'issue': issue, 'page': page}) paginator = Paginator(issue_pages, 20) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) # set page number variables if page.has_previous(): previous_page_number = int(page_number) - 1 if page.has_next(): next_page_number = int(page_number) + 1 if not page.object_list: notes = issue.notes.filter(type="noteAboutReproduction") num_notes = notes.count() if num_notes >= 1: display_label = notes[0].label explanation = notes[0].text page_title = 'All Pages: %s, %s' % (label(title), label(issue)) page_head_heading = "All Pages: %s, %s" % (title.display_name, label(issue)) page_head_subheading = label(title) crumbs = create_crumbs(title, issue, date, edition) response = render(request, 'issue_pages.html', locals()) return response
def title(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = label(title) page_name = "title" # we call these here, because the query the db, they are not # cached by django's ORM, and we have some conditional logic # in the template that would result in them getting called more # than once. Short story: minimize database hits... related_titles = title.related_titles() succeeding_titles = title.succeeding_titles() preceeding_titles = title.preceeding_titles() notes = [] has_external_link = False for note in title.notes.all(): org_text = html.escape(note.text) text = re.sub('(http(s)?://[^\s]+[^\.])', r'<a class="external" href="\1">\1</a>', org_text) if text != org_text: has_external_link = True notes.append(text) if title.has_issues: rep_notes = title.first_issue.notes.filter( type="noteAboutReproduction") num_notes = rep_notes.count() if num_notes >= 1: explanation = rep_notes[0].text first_issue = title.first_issue if first_issue: issue_date = first_issue.date_issued # add essay info on this page from either the database or from a template first_essay = title.first_essay essay_template = os.path.join(settings.ESSAY_TEMPLATES, title.lccn + ".html") crumbs = create_crumbs(title) response = render(request, 'title.html', locals()) return response
def page_print(request, lccn, date, edition, sequence, width, height, x1, y1, x2, y2): page = get_page(lccn, date, edition, sequence) title = get_object_or_404(models.Title, lccn=lccn) issue = page.issue page_title = "%s, %s, %s" % (label(title), label(issue), label(page)) crumbs = create_crumbs(title, issue, date, edition, page) host = request.get_host() image_credit = page.issue.batch.awardee.name path_parts = dict(lccn=lccn, date=date, edition=edition, sequence=sequence, width=width, height=height, x1=x1, y1=y1, x2=x2, y2=y2) url = urls.reverse('openoni_page_print', kwargs=path_parts) return render(request, 'page_print.html', locals())
def issues_first_pages(request, lccn, page_number=1): title = get_object_or_404(models.Title, lccn=lccn) issues = title.issues.all() if not issues.count() > 0: raise Http404("No issues for %s" % title.display_name) first_pages = [] for issue in issues: first_pages.append(issue.first_page) paginator = Paginator(first_pages, 20) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) page_title = 'Browse Issues: %s' % label(title) page_head_heading = "Browse Issues: %s" % title.display_name page_head_subheading = label(title) crumbs = create_crumbs(title) return render(request, 'issue_pages.html', locals())
def issues_first_pages(request, lccn, page_number=1): title = get_object_or_404(models.Title, lccn=lccn) issues = title.issues.all() if not issues.count() > 0: raise Http404("No issues for %s" % title.display_name) first_pages = [] for issue in issues: first_pages.append(issue.first_page) paginator = Paginator(first_pages, 20) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) page_title = 'Browse Issues: %s' % label(title) page_head_heading = "Browse Issues: %s" % title.display_name page_head_subheading = label(title) crumbs = create_crumbs(title) return render_to_response('issue_pages.html', dictionary=locals(), context_instance=RequestContext(request))
def title(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = label(title) page_name = "title" # we call these here, because the query the db, they are not # cached by django's ORM, and we have some conditional logic # in the template that would result in them getting called more # than once. Short story: minimize database hits... related_titles = title.related_titles() succeeding_titles = title.succeeding_titles() preceeding_titles = title.preceeding_titles() notes = [] has_external_link = False for note in title.notes.all(): org_text = html.escape(note.text) text = re.sub('(http(s)?://[^\s]+[^\.])', r'<a class="external" href="\1">\1</a>', org_text) if text != org_text: has_external_link = True notes.append(text) if title.has_issues: rep_notes = title.first_issue.notes.filter(type="noteAboutReproduction") num_notes = rep_notes.count() if num_notes >= 1: explanation = rep_notes[0].text # adding essay info on this page if it exists first_essay = title.first_essay first_issue = title.first_issue if first_issue: issue_date = first_issue.date_issued crumbs = create_crumbs(title) response = render_to_response('title.html', dictionary=locals(), context_instance=RequestContext(request)) return response
paginator = Paginator(issue.pages.all(), 20) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) if not page.object_list: notes = issue.notes.filter(type="noteAboutReproduction") num_notes = notes.count() if num_notes >= 1: display_label = notes[0].label explanation = notes[0].text page_title = 'All Pages: %s, %s' % (label(title), label(issue)) page_head_heading = "All Pages: %s, %s" % (title.display_name, label(issue)) page_head_subheading = label(title) crumbs = create_crumbs(title, issue, date, edition) response = render_to_response('issue_pages.html', dictionary=locals(), context_instance=RequestContext(request)) return response @cache_page(settings.DEFAULT_TTL_SECONDS) @rdf_view def issue_pages_rdf(request, lccn, date, edition): title, issue, page = _get_tip(lccn, date, edition) graph = issue_to_graph(issue) response = HttpResponse(graph.serialize(base=_rdf_base(request), include_base=True), content_type='application/rdf+xml') return response
def page(request, lccn, date, edition, sequence, words=None): fragments = [] if words: fragments.append("words=" + words) qs = request.META.get('QUERY_STRING') if qs: fragments.append(qs) if fragments: path_parts = dict(lccn=lccn, date=date, edition=edition, sequence=sequence) url = urls.reverse('openoni_page', kwargs=path_parts) return HttpResponseRedirect(url + "#" + "&".join(fragments)) title, issue, page = _get_tip(lccn, date, edition, sequence) if not page.jp2_filename: notes = page.notes.filter(type="noteAboutReproduction") num_notes = notes.count() if num_notes >= 1: explanation = notes[0].text else: explanation = "" # if no word highlights were requests, see if the user came # from search engine results and attempt to highlight words from their # query by redirecting to a url that has the highlighted words in it if not words: try: words = _search_engine_words(request) words = '+'.join(words) if len(words) > 0: path_parts = dict(lccn=lccn, date=date, edition=edition, sequence=sequence, words=words) url = urls.reverse('openoni_page_words', kwargs=path_parts) return HttpResponseRedirect(url) except Exception as e: if settings.DEBUG: raise e # else squish the exception so the page will still get # served up minus the highlights # Calculate the previous_issue_first_page. Note: it was decided # that we want to skip over issues with missing pages. See ticket # #383. _issue = issue while True: previous_issue_first_page = None _issue = _issue.previous if not _issue: break previous_issue_first_page = _issue.first_page if previous_issue_first_page: break # do the same as above but for next_issue this time. _issue = issue while True: next_issue_first_page = None _issue = _issue.next if not _issue: break next_issue_first_page = _issue.first_page if next_issue_first_page: break page_title = "%s, %s, %s" % (label(title), label(issue), label(page)) page_head_heading = "%s, %s, %s" % (title.display_name, label(issue), label(page)) page_head_subheading = label(title) crumbs = create_crumbs(title, issue, date, edition, page) filename = page.jp2_abs_filename if filename: try: im = os.path.getsize(filename) image_size = filesizeformat(im) except OSError: image_size = "Unknown" image_credit = issue.batch.awardee.name host = request.get_host() static_url = settings.STATIC_URL template = "page.html" response = render(request, template, locals()) return response
def title_marc(request, lccn): title = get_object_or_404(models.Title, lccn=lccn) page_title = "MARC Bibliographic Record: %s" % label(title) page_name = "marc" crumbs = create_crumbs(title) return render(request, 'marc.html', locals())
try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) if not page.object_list: notes = issue.notes.filter(type="noteAboutReproduction") num_notes = notes.count() if num_notes >= 1: display_label = notes[0].label explanation = notes[0].text page_title = 'All Pages: %s, %s' % (label(title), label(issue)) page_head_heading = "All Pages: %s, %s" % (title.display_name, label(issue)) page_head_subheading = label(title) crumbs = create_crumbs(title, issue, date, edition) response = render_to_response('issue_pages.html', dictionary=locals(), context_instance=RequestContext(request)) return response @cache_page(settings.DEFAULT_TTL_SECONDS) @rdf_view def issue_pages_rdf(request, lccn, date, edition): title, issue, page = _get_tip(lccn, date, edition) graph = issue_to_graph(issue) response = HttpResponse(graph.serialize(base=_rdf_base(request), include_base=True), content_type='application/rdf+xml') return response
def page_ocr(request, lccn, date, edition, sequence): title, issue, page = _get_tip(lccn, date, edition, sequence) page_title = "%s, %s, %s" % (label(title), label(issue), label(page)) crumbs = create_crumbs(title, issue, date, edition, page) host = request.get_host() return render(request, 'page_text.html', locals())