from django.views.generic import ListView from django.views.generic.detail import DetailView from django.views.generic.dates import YearArchiveView, MonthArchiveView from django.conf import settings from .models import Entry, HomepageCurrator from locations.models import Country class EntryList(ListView): """ Return a list of Entries in reverse chronological order """ context_object_name = 'object_list' queryset = Entry.objects.filter(status__exact=1).order_by('-pub_date').select_related() template_name = "archives/writing.html" def dispatch(self, request, *args, **kwargs): request.page_url = '/jrnl/%d/' request.page = int(self.kwargs['page']) return super(EntryList, self).dispatch(request, *args, **kwargs) class EntryCountryList(ListView): """ Return a list of Entries by Country in reverse chronological order """ context_object_name = 'object_list' template_name = "archives/writing.html" def dispatch(self, request, *args, **kwargs): request.page_url = '/jrnl/' + self.kwargs['slug'] + '/%d/' request.page = int(self.kwargs['page']) return super(EntryCountryList, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(EntryCountryList, self).get_context_data(**kwargs) context['region'] = Country.objects.get(slug__exact=self.kwargs['slug']) return context def get_queryset(self): country = Country.objects.get(slug__exact=self.kwargs['slug']) return Entry.objects.filter( status__exact=1, location__state__country=country ).order_by('-pub_date') class EntryYearArchiveView(YearArchiveView): queryset = Entry.objects.filter(status__exact=1).select_related() date_field = "pub_date" make_object_list = True allow_future = True template_name = "archives/writing_date.html" class EntryMonthArchiveView(MonthArchiveView): queryset = Entry.objects.filter(status__exact=1).select_related() date_field = "pub_date" allow_future = True template_name = "archives/writing_date.html" class EntryDetailView(DetailView): model = Entry template_name = "details/entry.html" slug_field = "slug" class HomepageList(ListView): """ Return a main entry and list of Entries in reverse chronological order """ context_object_name = 'recent' queryset = Entry.objects.filter(status__exact=1)[:4] def get_template_names(self): obj = HomepageCurrator.objects.get(pk=1) return ['%s' % obj.template_name] def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(HomepageList, self).get_context_data(**kwargs) context['homepage'] = HomepageCurrator.objects.get(pk=1) context['IMAGES_URL'] = settings.IMAGES_URL return context