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 %}
+
+
+
+
+
+
+
+
+ {% for post in object_list %}
+
+
+ {{post.title}}
+
+
+ {{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",)