SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 5fd7bd3e authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add permalink and detail page for NewsItem

parent 53074f71
No related branches found
No related tags found
No related merge requests found
...@@ -60,7 +60,7 @@ class NewsItem(models.Model): ...@@ -60,7 +60,7 @@ class NewsItem(models.Model):
return self.date.strftime("%Y-%m-%d") + ", " + self.headline return self.date.strftime("%Y-%m-%d") + ", " + self.headline
def get_absolute_url(self): def get_absolute_url(self):
return reverse("news:news") + "#news_" + str(self.id) return reverse("news:newsitem_detail", kwargs={"pk": self.id})
class NewsLetterNewsItemsTable(models.Model): class NewsLetterNewsItemsTable(models.Model):
......
<div class="p-3 mb-3 bg-light news-item scipost-bar" id="news_{{ news.id }}"> <div class="p-3 mb-3 bg-light news-item scipost-bar" id="news_{{ news.id }}">
<h3 class="title">{{ news.headline }}</h3> <h3 class="title">{{ news.headline }}</h3>
<h5 class="sub-title">{{ news.date|date:'j F Y' }}</h5> <h5 class="sub-title">{{ news.date|date:'j F Y' }}&emsp;<a href="{{ news.get_absolute_url }}">{% include 'bi/link.html' %}</a></h5>
{% if news.image %} {% if news.image %}
<div class="row"> <div class="row">
<div class="col-sm-3 col-lg-2"> <div class="col-sm-3 col-lg-2">
......
{% extends 'news/base.html' %}
{% load bootstrap %}
{% block pagetitle %}: News Item{% endblock pagetitle %}
{% block breadcrumb_items %}
{{ block.super }}
<span class="breadcrumb-item">{{ object.headline|truncatechars:20 }}</span>
{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<h1 class="highlight">News Item</h1>
{% include 'news/news_card_content.html' with news=object %}
</div>
</div>
{% endblock content %}
...@@ -36,6 +36,11 @@ urlpatterns = [ ...@@ -36,6 +36,11 @@ urlpatterns = [
name="newsletter_delete", name="newsletter_delete",
), ),
path("newsitem/add/", views.NewsItemCreateView.as_view(), name="newsitem_create"), path("newsitem/add/", views.NewsItemCreateView.as_view(), name="newsitem_create"),
path(
"newsitem/<int:pk>/",
views.NewsItemDetailView.as_view(),
name="newsitem_detail",
),
path( path(
"newsitem/<int:pk>/update/", "newsitem/<int:pk>/update/",
views.NewsItemUpdateView.as_view(), views.NewsItemUpdateView.as_view(),
......
...@@ -6,6 +6,7 @@ from django.contrib import messages ...@@ -6,6 +6,7 @@ from django.contrib import messages
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404, render, redirect from django.shortcuts import get_object_or_404, render, redirect
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView from django.views.generic.list import ListView
...@@ -117,6 +118,10 @@ class NewsItemCreateView(PermissionsMixin, CreateView): ...@@ -117,6 +118,10 @@ class NewsItemCreateView(PermissionsMixin, CreateView):
success_url = reverse_lazy("news:news") success_url = reverse_lazy("news:news")
class NewsItemDetailView(DetailView):
model = NewsItem
class NewsItemUpdateView(PermissionsMixin, UpdateView): class NewsItemUpdateView(PermissionsMixin, UpdateView):
""" """
Update a NewsItem. Update a NewsItem.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment