From e8b218274167346b942927ee146d096d48dfebf3 Mon Sep 17 00:00:00 2001 From: luxagraf Date: Wed, 6 Mar 2024 11:46:03 -0600 Subject: range: added new paths for essays --- app/posts/build.py | 7 ++++++- app/posts/models.py | 9 +++++---- app/posts/templates/posts/range_list.html | 2 +- app/posts/urls/essay_urls.py | 13 ++++++++++++- app/posts/views/craft_views.py | 2 +- app/posts/views/essay_views.py | 23 ++++++++++++++++++++++- app/posts/views/range_views.py | 2 +- 7 files changed, 48 insertions(+), 10 deletions(-) (limited to 'app/posts') diff --git a/app/posts/build.py b/app/posts/build.py index 1b21666..23d67d5 100644 --- a/app/posts/build.py +++ b/app/posts/build.py @@ -5,7 +5,7 @@ from builder.base import BuildNew from itertools import chain from django.conf import settings -from .models import PostType +from .models import PostType, PostTopic class BuildSrc(BuildNew): @@ -122,6 +122,11 @@ class BuildEssays(BuildNew): base_path=reverse("essay-list:list"), paginate_by=50 ) + for t in PostTopic.labels: + self.build_list_view( + base_path=reverse("essay-list:category-detail", kwargs={'topic':t}), + paginate_by=50 + ) self.build_detail_view() diff --git a/app/posts/models.py b/app/posts/models.py index 2ce7d96..c6ce559 100644 --- a/app/posts/models.py +++ b/app/posts/models.py @@ -76,7 +76,8 @@ class PostType(models.IntegerChoices): FIELD_NOTE = 5, ('field note') GUIDE = 6, ('guide') FILM = 7, ('film') - HOWTO = 8, ('how to') + CRAFT = 8, ('craft') + class PostTopic(models.IntegerChoices): SPIRIT = 0, ('spirit') @@ -86,7 +87,7 @@ class PostTopic(models.IntegerChoices): class Post(models.Model): site = models.ForeignKey(Site, on_delete=models.SET_NULL, default=1, null=True) - title = models.CharField(max_length=200) + title = models.CharField(max_length=200,help_text="49 characters is ideal for essays") short_title = models.CharField(max_length=200, blank=True, null=True) subtitle = models.CharField(max_length=200, blank=True) slug = models.SlugField(unique_for_date='pub_date') @@ -135,12 +136,12 @@ class Post(models.Model): if self.post_type == PostType.FILM: return reverse('film:detail', kwargs={"slug": self.slug}) if self.post_type == PostType.ESSAY: - return reverse('essays:detail', kwargs={"slug": self.slug}) + return reverse('essays:detail', kwargs={"cat": self.get_post_topic_display(), "slug": self.slug}) if self.post_type == PostType.SRC: return reverse('src:detail', kwargs={"slug": self.slug}) if self.post_type == PostType.REVIEW: return reverse('reviews:review-detail', kwargs={"slug": self.slug}) - if self.post_type == PostType.HOWTO: + if self.post_type == PostType.CRAFT: return reverse('craft:craft-detail', kwargs={"slug": self.slug}) if self.post_type == PostType.FIELD_NOTE: return reverse('fieldnote:detail', kwargs={"year": self.pub_date.year, "month": self.pub_date.strftime("%m"), "slug": self.slug}) diff --git a/app/posts/templates/posts/range_list.html b/app/posts/templates/posts/range_list.html index 09ad56d..c6c16d3 100644 --- a/app/posts/templates/posts/range_list.html +++ b/app/posts/templates/posts/range_list.html @@ -8,7 +8,7 @@

Subscribe to Range

A weekly post, ranging.

-

Range is a weekly mailing about life and how to live it. We talk about the intersection of Spirit, Craft, and Tools. Browse the archive below. If you like what you see, join us.

+

Range is a weekly mailing about life and how to live it. We talk about the intersection of Spirit, Craft, and Tools. Browse the archive below. If you like what you see, join us.

Être fort pour être utile

Archive

diff --git a/app/posts/urls/essay_urls.py b/app/posts/urls/essay_urls.py index 7eb872d..90a087c 100644 --- a/app/posts/urls/essay_urls.py +++ b/app/posts/urls/essay_urls.py @@ -6,7 +6,18 @@ app_name = "essays" urlpatterns = [ path( - r'', + r'//', + views.EssayCategoryList.as_view(), + name="category-detail" + ), + path( + r'/', + views.EssayCategoryList.as_view(), + {'page':1}, + name="category-detail" + ), + path( + r'/', views.EssayDetailView.as_view(), name="detail" ), diff --git a/app/posts/views/craft_views.py b/app/posts/views/craft_views.py index da5f2b1..409e393 100644 --- a/app/posts/views/craft_views.py +++ b/app/posts/views/craft_views.py @@ -17,7 +17,7 @@ class CraftListView(PaginatedListView): def get_queryset(self): queryset = super(CraftListView, self).get_queryset() - return queryset.filter(site__domain='luxagraf.net').filter(post_type__in=[PostType.HOWTO]).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image') + return queryset.filter(site__domain='luxagraf.net').filter(post_type__in=[PostType.CRAFT]).filter(status__exact=1).order_by('-pub_date').prefetch_related('location').prefetch_related('featured_image') def get_context_data(self, **kwargs): ''' diff --git a/app/posts/views/essay_views.py b/app/posts/views/essay_views.py index 02a1087..3c28834 100644 --- a/app/posts/views/essay_views.py +++ b/app/posts/views/essay_views.py @@ -7,7 +7,7 @@ from django.conf import settings from utils.views import PaginatedListView, LuxDetailView -from ..models import Post, PostType +from ..models import Post, PostType, PostTopic from taxonomy.models import Category @@ -29,6 +29,27 @@ class EssayListView(PaginatedListView): 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" diff --git a/app/posts/views/range_views.py b/app/posts/views/range_views.py index f196e5e..dc09cee 100644 --- a/app/posts/views/range_views.py +++ b/app/posts/views/range_views.py @@ -24,7 +24,7 @@ class RangeListView(PaginatedListView): """ model = Post template_name = "posts/range_list.html" - queryset = Post.objects.filter(post_type__in=[PostType.ESSAY,PostType.FILM,PostType.HOWTO,PostType.REVIEW],status=1).order_by('-pub_date') + queryset = Post.objects.filter(post_type__in=[PostType.ESSAY,PostType.FILM,PostType.CRAFT,PostType.REVIEW],status=1).order_by('-pub_date') def get_context_data(self, **kwargs): context = super(RangeListView, self).get_context_data(**kwargs) -- cgit v1.2.3-70-g09d2