From 5484b89e3a56491118e0f3528d69eb0f0c4da238 Mon Sep 17 00:00:00 2001 From: Calum Andrew Morrell Date: Tue, 11 Nov 2025 15:48:11 +0000 Subject: [PATCH] Added a class and path to redirect to original article. --- news/urls.py | 4 +++- news/views.py | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/news/urls.py b/news/urls.py index 5b37fbf..a023861 100644 --- a/news/urls.py +++ b/news/urls.py @@ -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//", NewsItemList.as_view(), name="list_tag"), path("//", NewsItemDetail.as_view(), name="detail"), + path("origin//", NewsItemRedirectView.as_view(), name="origin"), ] diff --git a/news/views.py b/news/views.py index ab950f5..0e5f579 100644 --- a/news/views.py +++ b/news/views.py @@ -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"