-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathviews.py
More file actions
58 lines (47 loc) · 2.09 KB
/
views.py
File metadata and controls
58 lines (47 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import calendar
import datetime
from django.conf import settings
from django.shortcuts import get_object_or_404, render, redirect
from core import models
from core.decorator import cache_page
from core.utils.utils import create_crumbs
from .issue_calendar import IssueCalendar
from onisite.plugins.calendar import config
@cache_page(settings.DEFAULT_TTL_SECONDS)
def all_issues_calendar(request, year=None):
page_title = "Browse All Issues"
page_name = "issues"
crumbs = list(settings.BASE_CRUMBS)
display_multiple = config.MULTIPLES_ALL_ISSUES
calendar = IssueCalendar(None, year)
return render(request, 'all_issues_calendar.html', locals())
@cache_page(settings.DEFAULT_TTL_SECONDS)
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())
@cache_page(settings.DEFAULT_TTL_SECONDS)
def issues_for_date(request, lccn, year, month, day):
m, d, y = int(month), int(day), int(year)
datestring = "%s %d, %d" % (calendar.month_name[m], d, y)
page_title = "Issues published on %s" % datestring
dt = datetime.date(y, m, d)
page_name = "issues_for_date"
dtstr = "%04d-%02d-%02d" % (y, m, d)
if lccn == "all":
issues = models.Issue.objects.filter(date_issued = dt)
else:
title = get_object_or_404(models.Title, lccn=lccn)
issues = models.Issue.objects.filter(date_issued = dt, title_id = lccn)
page_title = title.name + ": " + page_title
# For a single issue on a specific title, we just redirect the user to
# the issue in our newspaper viewer
if len(issues) == 1:
issue = issues[0]
return redirect("openoni_issue_pages", issue.title.lccn, dtstr, issue.edition)
return render(request, 'issues_for_date.html', locals())