diff --git a/galeri/__init__.py b/galeri/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/galeri/admin.py b/galeri/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/galeri/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/galeri/apps.py b/galeri/apps.py new file mode 100644 index 0000000..5f7fbe0 --- /dev/null +++ b/galeri/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class GaleriConfig(AppConfig): + name = 'galeri' diff --git a/galeri/migrations/0001_initial.py b/galeri/migrations/0001_initial.py new file mode 100644 index 0000000..2291271 --- /dev/null +++ b/galeri/migrations/0001_initial.py @@ -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, + }, + ), + ] diff --git a/galeri/migrations/__init__.py b/galeri/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/galeri/models.py b/galeri/models.py new file mode 100644 index 0000000..463276a --- /dev/null +++ b/galeri/models.py @@ -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'), + ] \ No newline at end of file diff --git a/galeri/templates/galeri/galeri_page.html b/galeri/templates/galeri/galeri_page.html new file mode 100644 index 0000000..0d2d3a2 --- /dev/null +++ b/galeri/templates/galeri/galeri_page.html @@ -0,0 +1,63 @@ + + +{% extends "base.html" %} + +{% load wagtailcore_tags wagtailimages_tags %} + +{% block body_class %}template-blogpage{% endblock %} + +{% block content %} +
+

Return to blog

+

{{ page.title }}

+

{{ page.date }}

+
{{ page.intro }}
+ + + + + + {{ page.body|richtext }} +
+ + {% for item in page.gallery_images.all %} +
+ {% image item.image fill-320x240 %} +

{{ item.caption }}

+
+ {% endfor %} + + {% endblock %} + + + +
\ No newline at end of file diff --git a/galeri/tests.py b/galeri/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/galeri/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/galeri/views.py b/galeri/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/galeri/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/ubytovani/settings/base.py b/ubytovani/settings/base.py index 0917e80..19ac10d 100644 --- a/ubytovani/settings/base.py +++ b/ubytovani/settings/base.py @@ -49,6 +49,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'stranky', + 'galeri', ] MIDDLEWARE = [