Added a class and path to redirect to original article.

dev
Calum Andrew Morrell 2025-11-11 15:48:11 +00:00
parent 28bbef0ea5
commit 5484b89e3a
2 changed files with 12 additions and 2 deletions

View File

@ -1,6 +1,7 @@
from django.urls import path
from .views import CategoryList, NewsItemDetail, NewsItemList, TagList
from .views import (CategoryList, NewsItemDetail, NewsItemList,
NewsItemRedirectView, TagList)
app_name = "news"
@ -11,4 +12,5 @@ urlpatterns = [
path("tags/", TagList.as_view(), name="tags"),
path("tags/<slug:tag>/", NewsItemList.as_view(), name="list_tag"),
path("<slug:category>/<slug:slug>/", NewsItemDetail.as_view(), name="detail"),
path("origin/<str:origin_text>/", NewsItemRedirectView.as_view(), name="origin"),
]

View File

@ -1,5 +1,5 @@
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView, ListView
from django.views.generic import DetailView, ListView, RedirectView
from .models import Category, NewsItem
@ -37,6 +37,14 @@ class NewsItemList(ListView):
return context
class NewsItemRedirectView(RedirectView):
def get_redirect_url(self, *args, **kwargs):
url = get_object_or_404(NewsItem, origin_text=kwargs["origin_text"])
url.origin_times_followed += 1
url.save()
return url.origin_link
class TagList(ListView):
template_name = "news/tag_list.html"