from django.views.generic import ListView from django.views.generic.detail import DetailView from django.contrib.syndication.views import Feed from django.urls import reverse from django.apps import apps from django.conf import settings from utils.views import PaginatedListView, LuxDetailView from ..models import Post, PostType from taxonomy.models import Category class GuideListView(PaginatedListView): """ Return a list of Entries in reverse chronological order """ model = Post template_name = "posts/guide_base.html" def get_queryset(self): queryset = super(GuideListView, self).get_queryset() return queryset.filter(status__exact=1).filter(post_type__in=[PostType.REVIEW,PostType.GUIDE]).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image') class GuideTopicListView(PaginatedListView): """ Return a list of Posts by topic in reverse chronological order """ model = Post template_name = "posts/guide_by_topic.html" def get_queryset(self): queryset = super(GuideTopicListView, self).get_queryset() topic = Category.objects.get(slug=self.kwargs['topic']) return queryset.filter(status__exact=1).filter(topics__slug=topic.slug).order_by('-pub_date').prefetch_related('featured_image') def get_context_data(self, **kwargs): context = super(GuideTopicListView, self).get_context_data(**kwargs) topic = Category.objects.get(slug=self.kwargs['topic']) context['topic'] = topic context['breadcrumbs'] = ('Guides', topic.name ) context['crumb_url'] = reverse('guides:guide-base') Category.objects.get(slug=self.kwargs['topic']) return context class GuideDetailView(LuxDetailView): model = Post slug_field = "slug" def get_template_names(self): obj = self.get_object() return ["posts/%s_detail.html" % obj.get_post_type_display(), 'posts/post_detail.html'] def get_context_data(self, **kwargs): context = super(GuideDetailView, self).get_context_data(**kwargs) related = [] for obj in self.object.related.all(): model = apps.get_model(obj.model_name.app_label, obj.model_name.model) related.append(model.objects.get(slug=obj.slug, pub_date=obj.pub_date)) context['related'] = related topic = Category.objects.get(slug=self.kwargs['topic']) context['topic'] = topic context['breadcrumbs'] = ('Guides', topic.name ) context['crumb_url'] = reverse('guides:guide-base') return context