summaryrefslogtreecommitdiff
path: root/app/posts/views.py
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2019-09-18 21:14:38 -0400
committerluxagraf <sng@luxagraf.net>2019-09-18 21:14:38 -0400
commit5bc22c064fbc51987007d85fbc8296a998cf6e84 (patch)
tree7d961ff86c478171ffee14168e9ae3f9d09f1ca5 /app/posts/views.py
parent9e7aadbcf9bab0ecfcd4afc96f6a09f9fe11a197 (diff)
added posts, consolidated essays into posts
Diffstat (limited to 'app/posts/views.py')
-rw-r--r--app/posts/views.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/app/posts/views.py b/app/posts/views.py
new file mode 100644
index 0000000..0324d16
--- /dev/null
+++ b/app/posts/views.py
@@ -0,0 +1,75 @@
+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')
+
+
+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
+
+
+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