123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- from datetime import datetime, timedelta
- from django.conf import settings
- from xml.dom import minidom
- from django.template.context import RequestContext
- from django.views.generic import list_detail
- from django.shortcuts import render_to_response, get_object_or_404
- from django.http import Http404
- from django.contrib.sites.models import Site
- from django.db.models import Q
- from almanac.models import WeatherConditions
- from newsroom.models import (
- Story,
- WebEdition,
- Paper,
- Author,
- Document,
- AttachedDocument,
- ArchiveItem,
- ArchiveSection,
- Editorial,
- )
- from darkroom.models import Photo, Gallery, Webcam
- from directory.models import Town
- from taggit.models import Tag, TaggedItem
- def index(request):
- stories = Story.objects.filter(published=True, published_on__lte=datetime.now)[:9]
- return render_to_response(
- "newsroom/index.html", locals(), context_instance=RequestContext(request)
- )
- def archive_index(request):
- archives = ArchiveItem.objects.all().order_by("-modified")
- return render_to_response(
- "newsroom/archive_index.html",
- locals(),
- context_instance=RequestContext(request),
- )
- def archive_year(request, year):
- archives = ArchiveItem.objects.filter(published_on__year=year)
- return render_to_response(
- "newsroom/archive_year.html", locals(), context_instance=RequestContext(request)
- )
- def archive_detail(request, year, slug):
- archive = get_object_or_404(ArchiveSection, slug=slug)
- return render_to_response(
- "newsroom/archive_detail.html",
- locals(),
- context_instance=RequestContext(request),
- )
- def author_list(request):
- authors = Author.objects.all()
- return render_to_response(
- "newsroom/author_list.html", locals(), context_instance=RequestContext(request)
- )
- def author_detail(request, type_slug, slug):
- author = Author.objects.get(slug=slug)
- stories = Story.objects.filter(published=True, authors=author)
- return render_to_response(
- "newsroom/author_detail.html",
- locals(),
- context_instance=RequestContext(request),
- )
- def update_view_count(request, story):
- """Take a story and a request and check the user agent against an exclusion file.
- By default, if no exclusion file has been set we just increment the view."""
- if not request.excluded_ip:
- story.view_count += 1
- story.save()
- def story_detail(request, year, month, day, slug):
- try:
- object = Story.objects.get(slug=slug)
- update_view_count(request, object)
- except Story.DoesNotExist:
- raise Http404
- return render_to_response(
- "newsroom/story_detail.html", locals(), context_instance=RequestContext(request)
- )
- def story_old_redirect(request, year, monthdayyear, mangled_slug):
- paper = mangled_slug[0:2]
- mangled_slug.remove(mangled_slug[0])
- mangled_slug.remove(mangled_slug[-1])
- slug = "-".join(mangled_slug)
- try:
- object = Story.objects.get(
- slug=slug, published_on__year=year, published_on__month=monthdayyear[0:2]
- )
- update_view_count(request, object)
- except Story.DoesNotExist:
- raise Http404
- return render_to_response(
- "newsroom/story_detail.html", locals(), context_instance=RequestContext(request)
- )
- def editorial_detail(request, year, month, day, slug):
- try:
- object = Editorial.objects.get(slug=slug)
- update_view_count(request, object)
- except Editorial.DoesNotExist:
- raise Http404
- return render_to_response(
- "newsroom/editorial_detail.html",
- locals(),
- context_instance=RequestContext(request),
- )
- def tag_index(request):
- tags = Tag.objects.all()
- if request.GET:
- for name in request.GET["filter"].split("+"):
- qs.append(Q(tags__name=name))
- import operator
- stories = Story.objects.filter(reduce(operator.or_, qs))
- return render_to_response(
- "newsroom/tag_index.html", locals(), context_instance=RequestContext(request)
- )
- def tag_detail(request, name):
- tag = get_object_or_404(Tag, name=name)
- stories = Story.objects.filter(tags__name=name)
- qs = []
- if request.GET:
- filter_list = request.GET["filter"].split("+")
- for name in filter_list:
- qs.append(Q(tags__name=name))
- import operator
- stories = stories.filter(reduce(operator.or_, qs))
- return render_to_response(
- "newsroom/tag_detail.html", locals(), context_instance=RequestContext(request)
- )
- def paper_index(request):
- """
- This view is awful. Hardcoded site ids for the various products.
- Really, its just part of a scaffold built around our previous
- site structure for transitional reasons.
- """
- webcams = Webcam.objects.all()
- edition = WebEdition.objects.published().latest()
- prev_edition = (
- WebEdition.objects.published()
- .filter(published_on__lt=edition.published_on)
- .latest()
- )
- other_editions = WebEdition.objects.filter(
- published_on=edition.published_on
- ).exclude(paper=edition.paper)
- prev_other_editions = WebEdition.objects.filter(
- published_on=prev_edition.published_on
- ).exclude(paper=edition.paper)
- latest_editions = WebEdition.objects.published().filter(
- published_on__gte=datetime.now() - timedelta(weeks=2)
- )
- latest_other_editions = WebEdition.objects.filter(
- published_on__gte=datetime.now() - timedelta(weeks=2)
- ).exclude(paper=edition.paper)
- return render_to_response(
- "newsroom/index.html", locals(), context_instance=RequestContext(request)
- )
|