diff options
author | luxagraf <sng@luxagraf.net> | 2019-09-18 21:14:38 -0400 |
---|---|---|
committer | luxagraf <sng@luxagraf.net> | 2019-09-18 21:14:38 -0400 |
commit | 5bc22c064fbc51987007d85fbc8296a998cf6e84 (patch) | |
tree | 7d961ff86c478171ffee14168e9ae3f9d09f1ca5 /app/posts/views.py | |
parent | 9e7aadbcf9bab0ecfcd4afc96f6a09f9fe11a197 (diff) |
added posts, consolidated essays into posts
Diffstat (limited to 'app/posts/views.py')
-rw-r--r-- | app/posts/views.py | 75 |
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 |