summaryrefslogtreecommitdiff
path: root/app/blog/views.py
blob: 7dd755b4caf08a039fc4b0f88c632391052fef9a (plain)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from django.views.generic import ListView
from django.views.generic.detail import DetailView
from django.views.generic.dates import YearArchiveView, MonthArchiveView

from django.conf import settings

from .models import Entry, HomepageCurrator

from locations.models import Country


class EntryList(ListView):
    """
    Return a list of Entries in reverse chronological order
    """
    context_object_name = 'object_list'
    queryset = Entry.objects.filter(status__exact=1).order_by('-pub_date').select_related()
    template_name = "archives/writing.html"

    def dispatch(self, request, *args, **kwargs):
        request.page_url = '/jrnl/%d/'
        request.page = int(self.kwargs['page'])
        return super(EntryList, self).dispatch(request, *args, **kwargs)


class EntryCountryList(ListView):
    """
    Return a list of Entries by Country in reverse chronological order
    """
    context_object_name = 'object_list'
    template_name = "archives/writing.html"

    def dispatch(self, request, *args, **kwargs):
        request.page_url = '/jrnl/' + self.kwargs['slug'] + '/%d/'
        request.page = int(self.kwargs['page'])
        return super(EntryCountryList, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(EntryCountryList, self).get_context_data(**kwargs)
        context['region'] = Country.objects.get(slug__exact=self.kwargs['slug'])
        return context

    def get_queryset(self):
        country = Country.objects.get(slug__exact=self.kwargs['slug'])
        return Entry.objects.filter(
            status__exact=1,
            location__state__country=country
        ).order_by('-pub_date')


class EntryYearArchiveView(YearArchiveView):
    queryset = Entry.objects.filter(status__exact=1).select_related()
    date_field = "pub_date"
    make_object_list = True
    allow_future = True
    template_name = "archives/writing_date.html"


class EntryMonthArchiveView(MonthArchiveView):
    queryset = Entry.objects.filter(status__exact=1).select_related()
    date_field = "pub_date"
    allow_future = True
    template_name = "archives/writing_date.html"


class EntryDetailView(DetailView):
    model = Entry
    template_name = "details/entry.html"
    slug_field = "slug"


class HomepageList(ListView):
    """
    Return a main entry and list of Entries in reverse chronological order
    """
    context_object_name = 'recent'
    queryset = Entry.objects.filter(status__exact=1)[:4]

    def get_template_names(self):
        obj = HomepageCurrator.objects.get(pk=1)
        return ['%s' % obj.template_name]

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(HomepageList, self).get_context_data(**kwargs)
        context['homepage'] = HomepageCurrator.objects.get(pk=1)
        context['IMAGES_URL'] = settings.IMAGES_URL
        return context