From 996e75dc2a36cb3242a3e4a61dfe282b86c107a7 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Wed, 13 Jul 2022 23:01:51 -0700 Subject: [PATCH] Add news posts You know. For basic information. Signed-off-by: Alek Ratzloff --- board/admin.py | 5 ++++ board/models.py | 11 ++++++++ board/static/board/style.css | 5 ++++ board/templates/board/news_list.html | 41 ++++++++++++++++++++++++++++ board/urls.py | 2 ++ board/views.py | 11 ++++++-- 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 board/templates/board/news_list.html diff --git a/board/admin.py b/board/admin.py index c30ca47..e9c4442 100644 --- a/board/admin.py +++ b/board/admin.py @@ -82,3 +82,8 @@ class BanTemplateAdmin(admin.ModelAdmin): @admin.register(Capcode) class CapcodeAdmin(GuardedModelAdmin): pass + + +@admin.register(NewsPost) +class NewsPostAdmin(admin.ModelAdmin): + pass diff --git a/board/models.py b/board/models.py index 112383e..fcb4d0c 100644 --- a/board/models.py +++ b/board/models.py @@ -397,3 +397,14 @@ class Capcode(models.Model): def __str__(self) -> str: return self.suffix + + +class NewsPost(models.Model): + # The time that this news post was created. + created = models.DateTimeField(auto_now_add=True) + # The title for this news post. + title = models.CharField(max_length=300) + # The author of this news post. + author = models.CharField(max_length=100, blank=True) + # The content of this news post. + body = models.TextField(blank=True) diff --git a/board/static/board/style.css b/board/static/board/style.css index 512f723..30bb9d2 100644 --- a/board/static/board/style.css +++ b/board/static/board/style.css @@ -158,6 +158,11 @@ th { right: 0px; } +/* News */ +.news_header { + font-size: small; +} + /* Misc */ a:link { diff --git a/board/templates/board/news_list.html b/board/templates/board/news_list.html new file mode 100644 index 0000000..3825acb --- /dev/null +++ b/board/templates/board/news_list.html @@ -0,0 +1,41 @@ +{% extends "board/base.html" %} +{% load i18n %} + +{% block title %} +News +{% endblock title %} + +{% block content %} + +
+
 
+

News

+
 
+
+ +
+ +
+
 
+
+ {% for post in object_list %} +
+
+

{{post.title}}

+
+ {% blocktranslate with created=post.created author=post.author %} + by {{author}} at + {% endblocktranslate %} +
+
+

{{post.body|safe|linebreaks}}

+
+
+
+
+ {% endfor %} +
+
 
+
+ +{% endblock content %} \ No newline at end of file diff --git a/board/urls.py b/board/urls.py index 1b35d27..10eaa88 100644 --- a/board/urls.py +++ b/board/urls.py @@ -6,6 +6,8 @@ from board.views import * app_name = "board" urlpatterns = [ + # News views + path("news/", NewsListView.as_view(), name="board_news"), # Board views path("/", BoardView.as_view(), name="board_detail"), path("/page//", BoardView.as_view(), name="board_detail"), diff --git a/board/views.py b/board/views.py index 4f7a52a..f204fde 100644 --- a/board/views.py +++ b/board/views.py @@ -8,14 +8,14 @@ from django.http import Http404, HttpResponseRedirect from django.http.request import QueryDict from django.shortcuts import get_object_or_404 from django.views.generic.base import TemplateView -from django.views.generic import edit +from django.views.generic import edit, list from django.urls import reverse, reverse_lazy from django.utils import timezone from guardian.shortcuts import get_objects_for_user from board.forms import * -from board.models import Ban, BanTemplate, Board, Post, Report +from board.models import Ban, BanTemplate, Board, NewsPost, Post, Report from board.utils import * __all__ = ( @@ -23,6 +23,7 @@ __all__ = ( "BanSuccessView", "BannedView", "BoardView", + "NewsListView", "PostCreateView", "PostModifyView", "PostModifySuccessView", @@ -372,3 +373,9 @@ class BanSuccessView(PermissionRequiredMixin, TemplateView): context = super().get_context_data(**kwargs) context["window_timeout"] = settings.BAN_WINDOW_CLOSE_TIMEOUT return context + + +class NewsListView(list.ListView): + model = NewsPost + template_name = "board/news_list.html" + ordering = ("-created",)