コード例 #1
0
def titles_in_state(request, state, page_number=1, order="name_normal"):
    if not any(i for i in models.Title._meta.local_fields if i.name == order):
        return HttpResponseRedirect(
            urlresolvers.reverse("chronam_state_page_number",
                                 kwargs={
                                     "state": state,
                                     "page_number": page_number
                                 }))

    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_to_response("reports/state.html",
                              dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #2
0
ファイル: reports.py プロジェクト: dbrunton/chronam
def cities_in_state(request, state, format="html"):
    state = unpack_url_path(state)
    if state is None:
        raise Http404
    page_title = "Cities in %s" % state

    places = models.Place.objects.filter(state__iexact=state, city__isnull=False).all()
    cities = sorted(set(p.city for p in places))

    if len(cities) == 0:
        raise Http404
    if format == "json":
        return HttpResponse(json.dumps(cities), mimetype="application/json")
    return render_to_response("reports/cities.html", dictionary=locals(), context_instance=RequestContext(request))
コード例 #3
0
ファイル: reports.py プロジェクト: phonedude/chronam
def cities_in_state(request, state, format='html'):
    state = unpack_url_path(state)
    if state is None:
        raise Http404
    page_title = 'Cities in %s' % state

    places = models.Place.objects.filter(state__iexact=state,
                                         city__isnull=False).all()
    cities = sorted(set(p.city for p in places))

    if len(cities) == 0:
        raise Http404
    if format == 'json':
        return HttpResponse(json.dumps(cities),
                            content_type='application/json')
    return render_to_response('reports/cities.html', dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #4
0
def counties_in_state(request, state, format='html'):
    state = unpack_url_path(state)
    if state is None:
        raise Http404
    page_title = 'Counties in %s' % state

    places = models.Place.objects.filter(state__iexact=state,
                                         county__isnull=False).all()
    county_names = sorted(set(p.county for p in places))

    if format == 'json':
        return HttpResponse(json.dumps(county_names),
                            mimetype='application/json')
    counties = [name for name in county_names]
    if len(counties) == 0:
        raise Http404
    return render_to_response('reports/counties.html', dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #5
0
ファイル: reports.py プロジェクト: sshyran/chronam
def counties_in_state(request, state, format="html"):
    state = unpack_url_path(state)
    if state is None:
        raise Http404
    page_title = "Counties in %s" % state

    places = models.Place.objects.filter(state__iexact=state,
                                         county__isnull=False).all()
    county_names = sorted(set(p.county for p in places))

    if format == "json":
        return HttpResponse(json.dumps(county_names),
                            content_type="application/json")
    counties = [name for name in county_names]
    if len(counties) == 0:
        raise Http404
    return render_to_response("reports/counties.html",
                              dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #6
0
ファイル: browse.py プロジェクト: REAP720801/chronam
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_to_response('reports/state.html', dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #7
0
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_to_response('reports/state.html', dictionary=locals(),
                              context_instance=RequestContext(request))
コード例 #8
0
def newspapers(request, state=None, format='html'):
    if state and state != "all_states":
        state = unpack_url_path(state)
        if state is None:
            raise Http404
        else:
            state = state.title()
    else:
        state = request.GET.get('state', None)

    language = request.GET.get('language', None)
    if language:
        language_display = models.Language.objects.get(code__contains=language).name
    ethnicity = request.GET.get('ethnicity', None)

    if not state and not language and not ethnicity:
        page_title = 'All Digitized Newspapers'
    else:
        page_title = 'Results: Digitized Newspapers'

    titles = models.Title.objects.filter(has_issues=True)
    titles = titles.annotate(first=Min('issues__date_issued'))
    titles = titles.annotate(last=Max('issues__date_issued'))

    if state:
        titles = titles.filter(places__state__iexact=state)

    if language:
        titles = titles.filter(languages__code__contains=language)

    if ethnicity:
        try:
            e = models.Ethnicity.objects.get(name=ethnicity)
            ethnicity_filter = Q(subjects__heading__icontains=ethnicity)
            for s in e.synonyms.all():
                ethnicity_filter |= Q(subjects__heading__icontains=s.synonym)
            titles = titles.filter(ethnicity_filter)
        except models.Ethnicity.DoesNotExist:
            pass

    _newspapers_by_state = {}
    for title in titles:
        if state:
            _newspapers_by_state.setdefault(state, set()).add(title)
        else:
            for place in title.places.all():
                if place.state:
                    _newspapers_by_state.setdefault(place.state, set()).add(title)

    newspapers_by_state = [(s, sorted(t, key=lambda title: title.name_normal)) for s, t in sorted(_newspapers_by_state.iteritems())]
    crumbs = list(settings.BASE_CRUMBS)

    if format == "html":
        return render_to_response("newspapers.html",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request))
    elif format == "txt":
        host = request.get_host()
        return render_to_response("newspapers.txt",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request),
                                  content_type="text/plain")
    elif format == "csv":
        csv_header_labels = ('Persistent Link', 'State', 'Title', 'LCCN', 'OCLC', 
                             'ISSN', 'No. of Issues', 'First Issue Date', 
                             'Last Issue Date', 'More Info')
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename="chronam_newspapers.csv"'
        writer = csv.writer(response)
        writer.writerow(csv_header_labels)
        for state, titles in newspapers_by_state:
            for title in titles:
                writer.writerow(('http://%s%s' % (request.get_host(), 
                                                  reverse('chronam_issues', 
                                                           kwargs={'lccn': title.lccn}),),
                                 state, title, title.lccn or '', title.oclc or '',
                                 title.issn or '', title.issues.count(), title.first, 
                                 title.last, 
                                 'http://%s%s' % (request.get_host(),
                                                  reverse('chronam_title_essays',
                                                           kwargs={'lccn': title.lccn}),),))
        return response

    elif format == "json":
        host = request.get_host()
        results = {"newspapers": []}
        for state, titles in newspapers_by_state:
            for title in titles:
                results["newspapers"].append({
                    "lccn": title.lccn,
                    "title": title.display_name,
                    "url": "http://" + host + title.json_url,
                    "state": state
                })

        return HttpResponse(json.dumps(results, indent=2), content_type='application/json')
    else:
        return HttpResponseServerError("unsupported format: %s" % format)
コード例 #9
0
def newspapers(request, state=None, format="html"):
    if state and state != "all_states":
        state = unpack_url_path(state)
        if state is None:
            raise Http404
        else:
            state = state.title()
    else:
        state = request.GET.get("state")

    language = language_display = None
    language_code = request.GET.get("language")
    if language_code:
        language = models.Language.objects.filter(code__startswith=language_code).first()
        if not language:
            language_code = None
        else:
            language_code = language.code
            language_display = language.name
    ethnicity = request.GET.get("ethnicity")

    if not state and not language and not ethnicity:
        page_title = "All Digitized Newspapers"
    else:
        page_title = "Results: Digitized Newspapers"

    titles = models.Title.objects.filter(has_issues=True)
    titles = titles.annotate(first=Min("issues__date_issued"))
    titles = titles.annotate(last=Max("issues__date_issued"))

    if state:
        titles = titles.filter(places__state__iexact=state)

    if language:
        titles = titles.filter(languages=language)

    if ethnicity:
        try:
            e = models.Ethnicity.objects.get(name=ethnicity)
            ethnicity_filter = Q(subjects__heading__icontains=ethnicity)
            for s in e.synonyms.all():
                ethnicity_filter |= Q(subjects__heading__icontains=s.synonym)
            titles = titles.filter(ethnicity_filter)
        except models.Ethnicity.DoesNotExist:
            pass

    _newspapers_by_state = {}
    for title in titles.prefetch_related("places"):
        if state:
            _newspapers_by_state.setdefault(state, set()).add(title)
        else:
            for place in title.places.all():
                if place.state:
                    _newspapers_by_state.setdefault(place.state, set()).add(title)

    newspapers_by_state = [
        (s, sorted(t, key=lambda title: title.name_normal))
        for s, t in sorted(_newspapers_by_state.iteritems())
    ]
    crumbs = list(settings.BASE_CRUMBS)

    if format == "html":
        return render_to_response(
            "newspapers.html", dictionary=locals(), context_instance=RequestContext(request)
        )
    elif format == "txt":
        host = request.get_host()
        return render_to_response(
            "newspapers.txt",
            dictionary=locals(),
            context_instance=RequestContext(request),
            content_type="text/plain",
        )
    elif format == "csv":
        csv_header_labels = (
            "Persistent Link",
            "State",
            "Title",
            "LCCN",
            "OCLC",
            "ISSN",
            "No. of Issues",
            "First Issue Date",
            "Last Issue Date",
            "More Info",
        )
        response = HttpResponse(content_type="text/csv")
        response["Content-Disposition"] = 'attachment; filename="chronam_newspapers.csv"'
        writer = csv.writer(response)
        writer.writerow(csv_header_labels)
        for state, titles in newspapers_by_state:
            for title in titles:
                writer.writerow(
                    (
                        request.build_absolute_uri(reverse("chronam_issues", kwargs={"lccn": title.lccn})),
                        state,
                        title,
                        title.lccn or "",
                        title.oclc or "",
                        title.issn or "",
                        title.issues.count(),
                        title.first,
                        title.last,
                        request.build_absolute_uri(
                            reverse("chronam_title_essays", kwargs={"lccn": title.lccn})
                        ),
                    )
                )
        return response

    elif format == "json":
        results = {"newspapers": []}
        for state, titles in newspapers_by_state:
            for title in titles:
                results["newspapers"].append(
                    {
                        "lccn": title.lccn,
                        "title": title.display_name,
                        "url": request.build_absolute_uri(title.json_url),
                        "state": state,
                    }
                )

        return HttpResponse(json.dumps(results), content_type="application/json")
    else:
        return HttpResponseServerError("unsupported format: %s" % format)
コード例 #10
0
ファイル: directory.py プロジェクト: mikebeccaria/chronam
def newspapers(request, state=None, format='html'):
    if state and state != "all_states":
        state = unpack_url_path(state)
        if state is None:
            raise Http404
        else:
            state = state.title()
    else:
        state = request.REQUEST.get('state', None)

    language = request.REQUEST.get('language', None)
    if language:
        language_display = models.Language.objects.get(code__contains=language).name
    ethnicity = request.REQUEST.get('ethnicity', None)

    if not state and not language and not ethnicity:
        page_title = 'All Digitized Newspapers'
        number_of_pages = index.page_count()
    else:
        page_title = 'Results: Digitized Newspapers'
        
    titles = models.Title.objects.filter(has_issues=True)
    titles = titles.annotate(first=Min('issues__date_issued'))
    titles = titles.annotate(last=Max('issues__date_issued'))

    if state:
        titles = titles.filter(places__state__iexact=state)

    if language:
        titles = titles.filter(languages__code__contains=language)

    if ethnicity:
        try:
            e = models.Ethnicity.objects.get(name=ethnicity)
            ethnicity_filter = Q(subjects__heading__icontains=ethnicity)
            for s in e.synonyms.all():
                ethnicity_filter |= Q(subjects__heading__icontains=s.synonym)
            titles = titles.filter(ethnicity_filter)
        except models.Ethnicity.DoesNotExist:
            pass

    _newspapers_by_state = {}
    for title in titles:
        if state:
            _newspapers_by_state.setdefault(state, set()).add(title)
        else:
            for place in title.places.all():
                if place.state:
                    _newspapers_by_state.setdefault(place.state, set()).add(title)

    newspapers_by_state = [(s, sorted(t, key=lambda title: title.name)) for s, t in sorted(_newspapers_by_state.iteritems())]
    crumbs = list(settings.BASE_CRUMBS)

    if format == "html":
        return render_to_response("newspapers.html",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request))
    elif format == "txt":
        host = request.get_host()
        return render_to_response("newspapers.txt",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request),
                                  mimetype="text/plain")
    elif format == "json":
        host = request.get_host()
        results = {"newspapers": []}
        for state, titles in newspapers_by_state:
            for title in titles:
                results["newspapers"].append({"lccn": title.lccn, "title": title.display_name, "url": "http://" + host + title.json_url, "state": state})

        return HttpResponse(json.dumps(results, indent=2), mimetype='application/json')
    else:
        return HttpResponseServerError("unsupported format: %s" % format)
コード例 #11
0
ファイル: directory.py プロジェクト: rugby110/chronam
def newspapers(request, state=None, format='html'):
    if state and state != "all_states":
        state = unpack_url_path(state)
        if state is None:
            raise Http404
        else:
            state = state.title()
    else:
        state = request.GET.get('state', None)

    language = request.GET.get('language', None)
    if language:
        language_display = models.Language.objects.get(
            code__contains=language).name
    ethnicity = request.GET.get('ethnicity', None)

    if not state and not language and not ethnicity:
        page_title = 'All Digitized Newspapers'
    else:
        page_title = 'Results: Digitized Newspapers'

    titles = models.Title.objects.filter(has_issues=True)
    titles = titles.annotate(first=Min('issues__date_issued'))
    titles = titles.annotate(last=Max('issues__date_issued'))

    if state:
        titles = titles.filter(places__state__iexact=state)

    if language:
        titles = titles.filter(languages__code__contains=language)

    if ethnicity:
        try:
            e = models.Ethnicity.objects.get(name=ethnicity)
            ethnicity_filter = Q(subjects__heading__icontains=ethnicity)
            for s in e.synonyms.all():
                ethnicity_filter |= Q(subjects__heading__icontains=s.synonym)
            titles = titles.filter(ethnicity_filter)
        except models.Ethnicity.DoesNotExist:
            pass

    _newspapers_by_state = {}
    for title in titles:
        if state:
            _newspapers_by_state.setdefault(state, set()).add(title)
        else:
            for place in title.places.all():
                if place.state:
                    _newspapers_by_state.setdefault(place.state,
                                                    set()).add(title)

    newspapers_by_state = [(s, sorted(t, key=lambda title: title.name_normal))
                           for s, t in sorted(_newspapers_by_state.iteritems())
                           ]
    crumbs = list(settings.BASE_CRUMBS)

    if format == "html":
        return render_to_response("newspapers.html",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request))
    elif format == "txt":
        host = request.get_host()
        return render_to_response("newspapers.txt",
                                  dictionary=locals(),
                                  context_instance=RequestContext(request),
                                  content_type="text/plain")
    elif format == "csv":
        csv_header_labels = ('Persistent Link', 'State', 'Title', 'LCCN',
                             'OCLC', 'ISSN', 'No. of Issues',
                             'First Issue Date', 'Last Issue Date',
                             'More Info')
        response = HttpResponse(content_type='text/csv')
        response[
            'Content-Disposition'] = 'attachment; filename="chronam_newspapers.csv"'
        writer = csv.writer(response)
        writer.writerow(csv_header_labels)
        for state, titles in newspapers_by_state:
            for title in titles:
                writer.writerow((
                    'http://%s%s' % (
                        request.get_host(),
                        reverse('chronam_issues', kwargs={'lccn': title.lccn}),
                    ),
                    state,
                    title,
                    title.lccn or '',
                    title.oclc or '',
                    title.issn or '',
                    title.issues.count(),
                    title.first,
                    title.last,
                    'http://%s%s' % (
                        request.get_host(),
                        reverse('chronam_title_essays',
                                kwargs={'lccn': title.lccn}),
                    ),
                ))
        return response

    elif format == "json":
        host = request.get_host()
        results = {"newspapers": []}
        for state, titles in newspapers_by_state:
            for title in titles:
                results["newspapers"].append({
                    "lccn": title.lccn,
                    "title": title.display_name,
                    "url": "http://" + host + title.json_url,
                    "state": state
                })

        return HttpResponse(json.dumps(results, indent=2),
                            content_type='application/json')
    else:
        return HttpResponseServerError("unsupported format: %s" % format)