diff options
author | Jonathan DeMasi <jon.demasi@colorado.edu> | 2020-03-02 16:11:08 -0700 |
---|---|---|
committer | Jonathan DeMasi <jon.demasi@colorado.edu> | 2020-03-02 16:11:08 -0700 |
commit | 16d9e16b204718fd476e738b8cc906fb7e919b56 (patch) | |
tree | dd65127824a3ab23379ef531047d2c848b247dbc | |
parent | 4872b099ccd2ddd4e6baa31b7a2b3cf391237a7a (diff) | |
download | jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar.gz jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar.bz2 jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar.lz jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar.xz jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.tar.zst jthanio-16d9e16b204718fd476e738b8cc906fb7e919b56.zip |
add blog app
-rw-r--r-- | blog/__init__.py | 0 | ||||
-rw-r--r-- | blog/admin.py | 3 | ||||
-rw-r--r-- | blog/apps.py | 5 | ||||
-rw-r--r-- | blog/migrations/0001_initial.py | 41 | ||||
-rw-r--r-- | blog/migrations/__init__.py | 0 | ||||
-rw-r--r-- | blog/models.py | 50 | ||||
-rw-r--r-- | blog/templates/blog/blog_index_page.html | 20 | ||||
-rw-r--r-- | blog/templates/blog/blog_post.html | 17 | ||||
-rw-r--r-- | blog/tests.py | 3 | ||||
-rw-r--r-- | blog/views.py | 3 | ||||
-rw-r--r-- | home/migrations/0003_homepage_body.py | 19 | ||||
-rw-r--r-- | home/models.py | 8 | ||||
-rw-r--r-- | home/templates/home/home_page.html | 20 | ||||
-rw-r--r-- | jthanio/settings/base.py | 1 |
14 files changed, 173 insertions, 17 deletions
diff --git a/blog/__init__.py b/blog/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/blog/__init__.py diff --git a/blog/admin.py b/blog/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/blog/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/blog/apps.py b/blog/apps.py new file mode 100644 index 0000000..7930587 --- /dev/null +++ b/blog/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class BlogConfig(AppConfig): + name = 'blog' diff --git a/blog/migrations/0001_initial.py b/blog/migrations/0001_initial.py new file mode 100644 index 0000000..f01069d --- /dev/null +++ b/blog/migrations/0001_initial.py @@ -0,0 +1,41 @@ +# Generated by Django 3.0.3 on 2020-03-02 22:55 + +from django.db import migrations, models +import django.db.models.deletion +import wagtail.core.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wagtailcore', '0045_assign_unlock_grouppagepermission'), + ] + + 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.core.fields.RichTextField(blank=True)), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + migrations.CreateModel( + name='BlogPost', + 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.core.fields.RichTextField(blank=True)), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + ] diff --git a/blog/migrations/__init__.py b/blog/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/blog/migrations/__init__.py diff --git a/blog/models.py b/blog/models.py new file mode 100644 index 0000000..34e6e24 --- /dev/null +++ b/blog/models.py @@ -0,0 +1,50 @@ +from django.db import models +from wagtail.core.models import Page, Orderable +from wagtail.core.fields import RichTextField +from wagtail.admin.edit_handlers import FieldPanel, InlinePanel, MultiFieldPanelfrom wagtail.search import index + +from modelcluster.fields import ParentalKey +from modelcluster.contrib.taggit import ClusterTaggableManager +from taggit.models import TaggedItemBase + +class BlogIndexPage(Page): + intro = RichTextField(blank=True) + + def get_context(self, request): + # Update context to include only published posts, ordered by reverse-chron + context = super().get_context(request) + blogpages = self.get_children().live().order_by('-first_published_at') + context['blogpages'] = blogpages + return context + + content_panels = Page.content_panels + [ + FieldPanel('intro', classname="full") + ] + +class BlogPageTag(TaggedItemBase): + content_object = ParentalKey( + 'BlogPage', + related_name='tagged_items', + on_delete=models.CASCADE + ) + + +class BlogPost(Page): + date = models.DateField("Post date") + intro = models.CharField(max_length=250) + body = RichTextField(blank=True) + tags = ClusterTaggableManager(through=BlogPageTag, blank=True) + + search_fields = Page.search_fields + [ + index.SearchField('intro'), + index.SearchField('body'), + ] + + content_panels = Page.content_panels + [ + MultiFieldPanel([ + FieldPanel('date'), + FieldPanel('tags'), + ], heading="Blog information"), + FieldPanel('intro'), + FieldPanel('body'), + ]
\ No newline at end of file diff --git a/blog/templates/blog/blog_index_page.html b/blog/templates/blog/blog_index_page.html new file mode 100644 index 0000000..0e9c56e --- /dev/null +++ b/blog/templates/blog/blog_index_page.html @@ -0,0 +1,20 @@ +{% 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> + <p>{{ post.intro }}</p> + {{ post.body|richtext }} + {% endwith %} +{% endfor %} + +{% endblock %}
\ No newline at end of file diff --git a/blog/templates/blog/blog_post.html b/blog/templates/blog/blog_post.html new file mode 100644 index 0000000..bf7da56 --- /dev/null +++ b/blog/templates/blog/blog_post.html @@ -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 %}
\ No newline at end of file diff --git a/blog/tests.py b/blog/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/blog/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/blog/views.py b/blog/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/blog/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/home/migrations/0003_homepage_body.py b/home/migrations/0003_homepage_body.py new file mode 100644 index 0000000..e9386b7 --- /dev/null +++ b/home/migrations/0003_homepage_body.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.3 on 2020-03-02 22:49 + +from django.db import migrations +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_create_homepage'), + ] + + operations = [ + migrations.AddField( + model_name='homepage', + name='body', + field=wagtail.core.fields.RichTextField(blank=True), + ), + ] diff --git a/home/models.py b/home/models.py index af7b579..dc320e5 100644 --- a/home/models.py +++ b/home/models.py @@ -1,7 +1,13 @@ from django.db import models from wagtail.core.models import Page +from wagtail.core.fields import RichTextField +from wagtail.admin.edit_handlers import FieldPanel class HomePage(Page): - pass + body = RichTextField(blank=True) + + content_panels = Page.content_panels + [ + FieldPanel('body', classname="full"), + ]
\ No newline at end of file diff --git a/home/templates/home/home_page.html b/home/templates/home/home_page.html index db9e9b0..d1a2f6d 100644 --- a/home/templates/home/home_page.html +++ b/home/templates/home/home_page.html @@ -1,21 +1,9 @@ {% extends "base.html" %} -{% load static %} -{% block body_class %}template-homepage{% endblock %} - -{% block extra_css %} +{% load wagtailcore_tags %} -{% comment %} -Delete the line below if you're just getting started and want to remove the welcome screen! -{% endcomment %} -<link rel="stylesheet" href="{% static 'css/welcome_page.css' %}"> -{% endblock extra_css %} +{% block body_class %}template-homepage{% endblock %} {% block content %} - -{% comment %} -Delete the line below if you're just getting started and want to remove the welcome screen! -{% endcomment %} -{% include 'home/welcome_page.html' %} - -{% endblock content %} + {{ page.body|richtext }} +{% endblock %} diff --git a/jthanio/settings/base.py b/jthanio/settings/base.py index 494f905..3870e66 100644 --- a/jthanio/settings/base.py +++ b/jthanio/settings/base.py @@ -25,6 +25,7 @@ BASE_DIR = os.path.dirname(PROJECT_DIR) INSTALLED_APPS = [ 'home', + 'blog', 'search', 'wagtail.contrib.forms', |