diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/posts/build.py | 7 | ||||
-rw-r--r-- | app/posts/models.py | 9 | ||||
-rw-r--r-- | app/posts/templates/posts/range_list.html | 2 | ||||
-rw-r--r-- | app/posts/urls/essay_urls.py | 13 | ||||
-rw-r--r-- | app/posts/views/craft_views.py | 2 | ||||
-rw-r--r-- | app/posts/views/essay_views.py | 23 | ||||
-rw-r--r-- | app/posts/views/range_views.py | 2 |
7 files changed, 48 insertions, 10 deletions
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 @@ <h1 class="list-hed">Subscribe to <em>Range</em></h1> <iframe target='_parent' style="border:none; background:white; width:100%;" title="embedded form for subscribing the the Friends of a Long Year newsletter" src="{% url 'lttr:subscribe' slug='range' %}"></iframe> <h2 class="list-subhed">A weekly post, ranging.</h2> - <p><em>Range</em> is a weekly mailing about life and how to live it. We talk about the intersection of <a href="/essays/">Spirit</a>, <a href="/how-to/">Craft</a>, and <a href="/reviews/">Tools</a>. Browse the archive below. If you like what you see, join us.</p> + <p><em>Range</em> is a weekly mailing about life and how to live it. We talk about the intersection of <a href="/essays/spirit/">Spirit</a>, <a href="/essays/craft/">Craft</a>, and <a href="/essays/tools/">Tools</a>. Browse the archive below. If you like what you see, join us.</p> <h3><i>Être fort pour être utile</i></h3> </div> <h3 class="archive-sans archive-hed">Archive</h3> 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'<str:slug>', + r'<str:topic>/<int:page>/', + views.EssayCategoryList.as_view(), + name="category-detail" + ), + path( + r'<str:topic>/', + views.EssayCategoryList.as_view(), + {'page':1}, + name="category-detail" + ), + path( + r'<str:cat>/<str:slug>', 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) |