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, PostTopic from taxonomy.models import Category class EssayListView(PaginatedListView): model = Post template_name = "posts/essay_list.html" def get_queryset(self): queryset = super(EssayListView, self).get_queryset() return queryset.filter(site__domain='luxagraf.net').filter(post_type__in=[PostType.ESSAY]).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image') def get_context_data(self, **kwargs): ''' override for custom breadcrumb path ''' # Call the base implementation first to get a context context = super(EssayListView, self).get_context_data(**kwargs) context['breadcrumbs'] = ('Essay',) return context class EssayCategoryList(PaginatedListView): model = Post template_name = "posts/essay_list.html" def get_queryset(self): queryset = super(EssayCategoryList, self).get_queryset() for t in PostTopic: if t.label == self.kwargs['topic']: topic = t return queryset.filter(site__domain='luxagraf.net').filter(post_type__in=[PostType.ESSAY],post_topic=topic).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image') def get_context_data(self, **kwargs): ''' override for custom breadcrumb path ''' # Call the base implementation first to get a context context = super(EssayCategoryList, self).get_context_data(**kwargs) context['breadcrumbs'] = ('Essay',) return context class EssayDetailView(LuxDetailView): model = Post slug_field = "slug" def get_queryset(self): queryset = super(EssayDetailView, self).get_queryset() return queryset.select_related('location').prefetch_related('field_notes') def get_context_data(self, **kwargs): context = super(EssayDetailView, 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 context['breadcrumbs'] = ('Range',) context['crumb_url'] = reverse('range:range-list') return context def get_template_names(self): obj = self.get_object() return ["posts/essay_detail.html"] class EssayDetailViewTXT(EssayDetailView): template_name = "posts/entry_detail.txt"