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 titles_in_county(request, state, county, page_number=1, order='name_normal'): state, county = map(unpack_url_path, (state, county)) page_title = "Titles in County: %s, %s" % (county, state) titles = models.Title.objects.all() if county: titles = titles.filter(places__county__iexact=county) if state: titles = titles.filter(places__state__iexact=state) titles = titles.order_by(order) titles = titles.distinct() if titles.count() == 0: raise Http404 paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/county.html', dictionary=locals(), context_instance=RequestContext(request))
def language_pages(request, language, batch, title=None, page_number=1): language_name = models.Language.objects.get(code=language).name page_title = 'Pages with %s text' % (language_name) path = 'reports/language_title_pages.html' if language != 'eng': if title: pages = models.Page.objects.filter( ocr__language_texts__language__code=language, issue__title__lccn=title).values( 'reel__number', 'issue__date_issued', 'issue__title__lccn', 'issue__edition', 'sequence', ).order_by('reel__number', 'issue__date_issued', 'sequence') else: pages = models.Page.objects.filter( ocr__language_texts__language__code=language, issue__batch__name=batch).values( 'reel__number', 'issue__date_issued', 'issue__title__lccn', 'issue__edition', 'sequence', ).order_by('reel__number', 'issue__title__lccn', 'issue__date_issued', 'sequence') path = 'reports/language_batch_pages.html' paginator = Paginator(pages, 25) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render(request, path, locals())
def events_atom(request, page_number=1): events = models.LoadBatchEvent.objects.all().order_by('-created') paginator = Paginator(events, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/events.xml', locals(), content_type='application/atom+xml')
def titles_in_city(request, state, county, city, page_number=1, order='name_normal'): state, county, city = map(unpack_url_path, (state, county, city)) page_title = "Titles in City: %s, %s" % (city, state) titles = models.Title.objects.all() if city: titles = titles.filter(places__city__iexact=city) if county: titles = titles.filter(places__county__iexact=county) if state: titles = titles.filter(places__state__iexact=state) titles = titles.order_by(order) titles.distinct() if titles.count() == 0: raise Http404 paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/city.html', dictionary=locals(), context_instance=RequestContext(request))
def events(request, page_number=1): page_title = 'Events' events = models.LoadBatchEvent.objects.all().order_by('-created') paginator = Paginator(events, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/events.html', locals())
def batches(request, page_number=1): page_title = 'Batches' batches = models.Batch.viewable_batches() paginator = Paginator(batches, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/batches.html', locals())
def reels(request, page_number=1): page_title = 'Reels' reels = models.Reel.objects.all().order_by('number') paginator = Paginator(reels, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/reels.html', locals())
def events_atom(request, page_number=1): events = models.LoadBatchEvent.objects.all().order_by('-created') paginator = Paginator(events, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/events.xml', dictionary=locals(), context_instance=RequestContext(request), content_type='application/atom+xml')
def batches(request, page_number=1): page_title = 'Batches' batches = models.Batch.viewable_batches() paginator = Paginator(batches, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/batches.html', dictionary=locals(), context_instance=RequestContext(request))
def reels(request, page_number=1): page_title = 'Reels' reels = models.Reel.objects.all().order_by('number') paginator = Paginator(reels, 25) page = paginator.page(page_number) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/reels.html', dictionary=locals(), context_instance=RequestContext(request))
def institutions(request, page_number=1): page_title = 'Institutions' institutions = models.Institution.objects.all() paginator = Paginator(institutions, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/institutions.html', locals())
def institutions(request, page_number=1): page_title = 'Institutions' institutions = models.Institution.objects.all() paginator = Paginator(institutions, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/institutions.html', dictionary=locals(), context_instance=RequestContext(request))
def institution_titles(request, code, page_number=1): institution = get_object_or_404(models.Institution, code=code) page_title = 'Titles held by %s' % institution titles = models.Title.objects.filter( holdings__institution=institution).distinct() paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/institution_titles.html', locals())
def institution_titles(request, code, page_number=1): institution = get_object_or_404(models.Institution, code=code) page_title = 'Titles held by %s' % institution titles = models.Title.objects.filter( holdings__institution=institution).distinct() paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/institution_titles.html', dictionary=locals(), context_instance=RequestContext(request))
def language_titles(request, language, page_number=1): language_name = models.Language.objects.get(code=language).name page_title = 'Titles with %s text' % (language_name) if language != "eng": titles = models.Title.objects.filter( issues__pages__ocr__language_texts__language__code=language ).values('lccn', 'issues__batch__name').annotate(count=Count('lccn')) paginator = Paginator(titles, 25) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/language_titles.html', locals())
def batches(request, page_number=1): page_title = 'Batches' batches = models.Batch.viewable_batches().order_by('-created') paginator = Paginator(batches, 25) page = paginator.page(page_number) 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 return render(request, 'reports/batches.html', locals())
def language_titles(request, language, page_number=1): language_name = models.Language.objects.get(code=language).name page_title = 'Titles with %s text' % (language_name) if language != "eng": titles = models.Title.objects.filter( issues__pages__ocr__language_texts__language__code=language ).values('lccn', 'issues__batch__name').annotate(count=Count('lccn')) paginator = Paginator(titles, 25) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/language_titles.html', dictionary=locals(), context_instance=RequestContext(request))
def language_batches(request, language, page_number=1): language_name = models.Language.objects.get(code=language).name page_title = 'Batches with %s text' % (language_name) if language != "eng": batches = models.Batch.objects.filter( issues__pages__ocr__language_texts__language__code=language ).values('name').annotate(count=Count('name')) paginator = Paginator(batches, 25) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response('reports/language_batches.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 titles_in_state(request, state, page_number=1, order='name_normal'): state = unpack_url_path(state) page_title = "Titles in State: %s" % state titles = models.Title.objects.all() if state: titles = titles.filter(places__state__iexact=state) titles = titles.order_by(order) titles = titles.distinct() if titles.count() == 0: raise Http404 paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render(request, 'reports/state.html', locals())
def titles(request, start=None, page_number=1): page_title = 'Newspaper Titles' if start: page_title += ' Starting With %s' % start titles = models.Title.objects.order_by('name_normal') titles = titles.filter(name_normal__istartswith=start.upper()) else: titles = models.Title.objects.all().order_by('name_normal') paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_start = page.start_index() page_end = page.end_index() page_range_short = list(_page_range_short(paginator, page)) browse_val = [chr(n) for n in range(65, 91)] browse_val.extend([str(i) for i in range(10)]) collapse_search_tab = True crumbs = list(settings.BASE_CRUMBS) return render(request, 'titles.html', locals())
def titles(request, start=None, page_number=1): page_title = 'Newspaper Titles' if start: page_title += ' Starting With %s' % start titles = models.Title.objects.order_by('name_normal') titles = titles.filter(name_normal__istartswith=start.upper()) else: titles = models.Title.objects.all().order_by('name_normal') paginator = Paginator(titles, 50) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_start = page.start_index() page_end = page.end_index() page_range_short = list(_page_range_short(paginator, page)) browse_val = [chr(n) for n in range(65, 91)] browse_val.extend([str(i) for i in range(10)]) collapse_search_tab = True crumbs = list(settings.BASE_CRUMBS) return render_to_response('titles.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: 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 language_pages(request, language, batch, title=None, page_number=1): language_name = models.Language.objects.get(code=language).name page_title = 'Pages with %s text' % (language_name) path = 'reports/language_title_pages.html' if language != 'eng': if title: pages = models.Page.objects.filter( ocr__language_texts__language__code=language, issue__title__lccn=title ).values( 'reel__number', 'issue__date_issued', 'issue__title__lccn', 'issue__edition', 'sequence', ).order_by( 'reel__number', 'issue__date_issued', 'sequence' ) else: pages = models.Page.objects.filter( ocr__language_texts__language__code=language, issue__batch__name=batch ).values( 'reel__number', 'issue__date_issued', 'issue__title__lccn', 'issue__edition', 'sequence', ).order_by( 'reel__number', 'issue__title__lccn', 'issue__date_issued', 'sequence' ) path = 'reports/language_batch_pages.html' paginator = Paginator(pages, 25) try: page = paginator.page(page_number) except InvalidPage: page = paginator.page(1) page_range_short = list(_page_range_short(paginator, page)) return render_to_response(path, dictionary=locals(), context_instance=RequestContext(request))
_year, _month, _day = date.split("-") try: _date = datetime.date(int(_year), int(_month), int(_day)) except ValueError, e: raise Http404 try: issue = title.issues.filter(date_issued=_date, edition=edition).order_by("-created")[0] except IndexError, e: raise Http404 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
def search_pages_results(request, view_type='gallery'): page_title = "Search Results" paginator = search_pages_paginator(request) q = paginator.query try: page = paginator.page(paginator._cur_page) except InvalidPage: url = urls.reverse('openoni_search_pages_results') # Set the page to the first page q['page'] = 1 return HttpResponseRedirect('%s?%s' % (url, q.urlencode())) start = page.start_index() end = page.end_index() # figure out the next page number query = request.GET.copy() if page.has_next(): query['page'] = paginator._cur_page + 1 next_url = '?' + query.urlencode() # and the previous page number if page.has_previous(): query['page'] = paginator._cur_page - 1 previous_url = '?' + query.urlencode() rows = query.get("rows", "20") sort = query.get("sort", default="relevance") seq_check = "checked" if query.get("sequence", "0") == "1" else "" crumbs = list(settings.BASE_CRUMBS) host = request.get_host() format = request.GET.get('format', None) if format == 'atom': feed_url = settings.BASE_URL + request.get_full_path() updated = rfc3339(timezone.now()) return render(request, 'search/search_pages_results.xml', locals(), content_type='application/atom+xml') elif format == 'json': results = { 'startIndex': start, 'endIndex': end, 'totalItems': paginator.count, 'itemsPerPage': rows, 'items': [p.solr_doc for p in page.object_list], } for i in results['items']: i['url'] = settings.BASE_URL + i['id'].rstrip('/') + '.json' json_text = json.dumps(results, indent=2) # jsonp? if request.GET.get('callback') is not None: json_text = "%s(%s);" % (request.GET.get('callback'), json_text) return HttpResponse(json_text, content_type='application/json') page_range_short = list(_page_range_short(paginator, page)) # copy the current request query without the page and sort # query params so we can construct links with it in the template q = request.GET.copy() for i in ('page', 'sort'): if i in q: q.pop(i) q = q.urlencode() # get an pseudo english version of the query english_search = paginator.englishify() form = forms.SearchResultsForm({"rows": rows, "sort": sort}) if view_type == "list": template = "search/search_pages_results_list.html" else: template = "search/search_pages_results.html" page_list = [] lccns = query.getlist("lccn") titles = [] for lccn in lccns: name = str(models.Title.objects.get(lccn=lccn)) titles.append({ 'abbrev': name[:24] + '...' if len(name) > 24 else name, 'lccn': lccn, 'name': name, }) for count in range(len(page.object_list)): page_list.append((count + start, page.object_list[count])) start_year, end_year = fulltext_range() searching_all_dates = False if request.GET.get('date1') and request.GET.get('date2'): if request.GET.get('date1') == str(start_year) + '-01-01': if request.GET.get('date2') == str(end_year) + '-12-31': searching_all_dates = True return render(request, template, locals())
def search_pages_results(request, view_type='gallery'): page_title = "Search Results" paginator = search_pages_paginator(request) q = paginator.query try: page = paginator.page(paginator._cur_page) except InvalidPage: url = urlresolvers.reverse('openoni_search_pages_results') # Set the page to the first page q['page'] = 1 return HttpResponseRedirect('%s?%s' % (url, q.urlencode())) start = page.start_index() end = page.end_index() # figure out the next page number query = request.GET.copy() if page.has_next(): query['page'] = paginator._cur_page + 1 next_url = '?' + query.urlencode() # and the previous page number if page.has_previous(): query['page'] = paginator._cur_page - 1 previous_url = '?' + query.urlencode() rows = query.get("rows", "20") sort = query.get("sort", default="relevance") seq_check = "checked" if query.get("sequence", "0") == "1" else "" crumbs = list(settings.BASE_CRUMBS) host = request.get_host() format = request.GET.get('format', None) if format == 'atom': feed_url = settings.BASE_URL + request.get_full_path() updated = rfc3339(datetime.datetime.now()) return render_to_response('search/search_pages_results.xml', dictionary=locals(), context_instance=RequestContext(request), content_type='application/atom+xml') elif format == 'json': results = { 'startIndex': start, 'endIndex': end, 'totalItems': paginator.count, 'itemsPerPage': rows, 'items': [p.solr_doc for p in page.object_list], } for i in results['items']: i['url'] = settings.BASE_URL + i['id'].rstrip('/') + '.json' json_text = json.dumps(results, indent=2) # jsonp? if request.GET.get('callback') is not None: json_text = "%s(%s);" % (request.GET.get('callback'), json_text) return HttpResponse(json_text, content_type='application/json') page_range_short = list(_page_range_short(paginator, page)) # copy the current request query without the page and sort # query params so we can construct links with it in the template q = request.GET.copy() for i in ('page', 'sort'): if i in q: q.pop(i) q = q.urlencode() # get an pseudo english version of the query english_search = paginator.englishify() # get some stuff from the query string for use in the form titles = query.getlist('titles') state = query.getlist('state') form = forms.SearchResultsForm({"rows": rows, "sort": sort}) if view_type == "list": template = "search/search_pages_results_list.html" else: template = "search/search_pages_results.html" page_list = [] for count in range(len(page.object_list)): page_list.append((count + start, page.object_list[count])) return render_to_response(template, dictionary=locals(), context_instance=RequestContext(request))