Add blog app

master
Pete Ley 7 months ago
parent ff03775617
commit 38cf2529d9

3
.gitignore vendored

@ -1,3 +1,4 @@
venv/
db.sqlite3
__pycache__/
__pycache__/
media/

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,6 @@
from django.apps import AppConfig
class BlogConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "blog"

@ -0,0 +1,38 @@
# Generated by Django 4.2.6 on 2023-10-17 17:07
from django.db import migrations, models
import django.db.models.deletion
import wagtail.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
]
operations = [
migrations.CreateModel(
name="BlogIndexPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("intro", wagtail.fields.RichTextField(blank=True)),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
]

@ -0,0 +1,39 @@
# Generated by Django 4.2.6 on 2023-10-17 17:19
from django.db import migrations, models
import django.db.models.deletion
import wagtail.fields
class Migration(migrations.Migration):
dependencies = [
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
("blog", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="BlogPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("date", models.DateField(verbose_name="Post date")),
("intro", models.CharField(max_length=250)),
("body", wagtail.fields.RichTextField(blank=True)),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
]

@ -0,0 +1,36 @@
from django.db import models
from wagtail.admin.panels import FieldPanel
from wagtail.fields import RichTextField
from wagtail.models import Page
from wagtail.search import index
class BlogIndexPage(Page):
intro = RichTextField(blank=True)
content_panels = Page.content_panels + [
FieldPanel('intro')
]
def get_context(self, request):
context = super().get_context(request)
blogpages = self.get_children().live().order_by('-first_published_at')
context['blogpages'] = blogpages
return context
class BlogPage(Page):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
body = RichTextField(blank=True)
search_fields = Page.search_fields + [
index.SearchField('intro'),
index.SearchField('body'),
]
content_panels = Page.content_panels + [
FieldPanel('date'),
FieldPanel('intro'),
FieldPanel('body'),
]

@ -0,0 +1,23 @@
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block body_class %}template-blogindexpage{% endblock %}
{% block content %}
<h1>{{ page.title }}</h1>
<div class="intro">
{{ page.intro|richtext }}
</div>
{% for post in blogpages %}
{% with post=post.specific %}
<h2>
<a href="{% pageurl post %}">{{ post.title }}</a>
</h2>
{{ post.intro }}
{{ post.body|richtext }}
{% endwith %}
{% endfor %}
{% endblock %}

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block body_class %}template-blogpage{% endblock %}
{% block content %}
<h1>{{ page.title }}</h1>
<p class="meta">{{ page.date }}</p>
<div class="intro">{{ page.intro }}</div>
{{ page.body|richtext }}
<p><a href="{{ page.get_parent.url }}">Return to blog</a></p>
{% endblock %}

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

@ -24,6 +24,7 @@ BASE_DIR = os.path.dirname(PROJECT_DIR)
# Application definition
INSTALLED_APPS = [
'blog',
"home",
"search",
"wagtail.contrib.forms",

Loading…
Cancel
Save