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
|
from django.views.generic import ListView
from django.views.generic.detail import DetailView
from django.contrib.syndication.views import Feed
from django.apps import apps
from django.conf import settings
from utils.views import PaginatedListView
from .models import Post
from taxonomy.models import Category
class PostList(PaginatedListView):
"""
Return a list of Entries in reverse chronological order
"""
model = Post
def get_queryset(self):
queryset = super(PostList, self).get_queryset()
return queryset.filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image')
class GuidesListView(PostList):
def get_queryset(self):
queryset = super(GuidesListView, self).get_queryset()
return queryset.filter(post_type__in=[0,1]).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image')
def get_context_data(self, **kwargs):
context = super(GuidesListView, self).get_context_data(**kwargs)
context['archive_type'] = 'Guides'
return context
class EssayListView(PostList):
template_name = "posts/essay_list.html"
def get_queryset(self):
queryset = super(EssayListView, self).get_queryset()
return queryset.filter(post_type__in=[2,]).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image')
class PostDetailView(DetailView):
model = Post
slug_field = "slug"
def get_queryset(self):
queryset = super(PostDetailView, self).get_queryset()
return queryset.select_related('location').prefetch_related('field_notes')
def get_context_data(self, **kwargs):
context = super(PostDetailView, self).get_context_data(**kwargs)
related = []
for obj in self.object.related.all():
model = apps.get_model(obj.post_model.app_label, obj.post_model.model)
related.append(model.objects.get(slug=obj.slug))
context['related'] = related
return context
def get_template_names(self):
obj = self.get_object()
return ["posts/%s_detail.html" % obj.get_post_type_display(), 'posts/post_detail.html']
class PostDetailViewTXT(PostDetailView):
template_name = "posts/entry_detail.txt"
class PostsRSSFeedView(Feed):
title = "VanLifeReviews.com: "
link = "/"
description = "Latest reviews, stories and guides"
description_template = 'feeds/blog_description.html'
def items(self):
return Post.objects.filter(status__exact=1).order_by('-pub_date')[:10]
def item_pubdate(self, item):
"""
Takes an item, as returned by items(), and returns the item's
pubdate.
"""
return item.pub_date
|