
10 changed files with 169 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||
from django.contrib import admin |
|||
|
|||
# Register your models here. |
@ -0,0 +1,5 @@ |
|||
from django.apps import AppConfig |
|||
|
|||
|
|||
class GaleriConfig(AppConfig): |
|||
name = 'galeri' |
@ -0,0 +1,46 @@ |
|||
# Generated by Django 3.1.3 on 2020-11-25 21:26 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
import modelcluster.fields |
|||
import wagtail.core.fields |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
initial = True |
|||
|
|||
dependencies = [ |
|||
('wagtailimages', '0022_uploadedimage'), |
|||
('wagtailcore', '0059_apply_collection_ordering'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='GaleriPage', |
|||
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',), |
|||
), |
|||
migrations.CreateModel( |
|||
name='GaleriPageGalleryImage', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)), |
|||
('caption', models.CharField(blank=True, max_length=250)), |
|||
('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailimages.image')), |
|||
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='gallery_images', to='galeri.galeripage')), |
|||
], |
|||
options={ |
|||
'ordering': ['sort_order'], |
|||
'abstract': False, |
|||
}, |
|||
), |
|||
] |
@ -0,0 +1,45 @@ |
|||
from django.db import models |
|||
|
|||
# New imports added for ParentalKey, Orderable, InlinePanel, ImageChooserPanel |
|||
|
|||
from modelcluster.fields import ParentalKey |
|||
|
|||
from wagtail.core.models import Page, Orderable |
|||
from wagtail.core.fields import RichTextField |
|||
from wagtail.admin.edit_handlers import FieldPanel, InlinePanel |
|||
from wagtail.images.edit_handlers import ImageChooserPanel |
|||
from wagtail.search import index |
|||
|
|||
|
|||
# ... (Keep the definition of BlogIndexPage, and update BlogPage:) |
|||
|
|||
|
|||
class GaleriPage(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', classname="full"), |
|||
InlinePanel('gallery_images', label="Gallery images"), |
|||
] |
|||
|
|||
|
|||
class GaleriPageGalleryImage(Orderable): |
|||
page = ParentalKey(GaleriPage, on_delete=models.CASCADE, related_name='gallery_images') |
|||
image = models.ForeignKey( |
|||
'wagtailimages.Image', on_delete=models.CASCADE, related_name='+' |
|||
) |
|||
caption = models.CharField(blank=True, max_length=250) |
|||
|
|||
panels = [ |
|||
ImageChooserPanel('image'), |
|||
FieldPanel('caption'), |
|||
] |
@ -0,0 +1,63 @@ |
|||
<style> |
|||
body{ |
|||
background-color: antiquewhite; |
|||
} |
|||
h2,h1,h3,h4,p{ |
|||
text-align: center; |
|||
} |
|||
.stran{ |
|||
|
|||
width: 60%; |
|||
height: auto; |
|||
background-color: rgb(240, 219, 162); |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
img { |
|||
display: block; |
|||
margin-left: auto; |
|||
margin-right: auto } |
|||
.intro{ |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</style> |
|||
|
|||
{% extends "base.html" %} |
|||
|
|||
{% load wagtailcore_tags wagtailimages_tags %} |
|||
|
|||
{% block body_class %}template-blogpage{% endblock %} |
|||
|
|||
{% block content %} |
|||
<div class="stran"> |
|||
<p><a href="{{ page.get_parent.url }}">Return to blog</a></p> |
|||
<h1>{{ page.title }}</h1> |
|||
<p class="meta">{{ page.date }}</p> |
|||
<div class="intro">{{ page.intro }}</div> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
{{ page.body|richtext }} |
|||
<br> |
|||
|
|||
{% for item in page.gallery_images.all %} |
|||
<div style="float: right; margin: 28px"> |
|||
{% image item.image fill-320x240 %} |
|||
<p>{{ item.caption }}</p> |
|||
</div> |
|||
{% endfor %} |
|||
|
|||
{% endblock %} |
|||
|
|||
|
|||
|
|||
</div> |
@ -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. |
Loading…
Reference in new issue