Skip to content
This repository has been archived by the owner on Nov 7, 2019. It is now read-only.

Commit

Permalink
Merge pull request #951 from liqd/ka-2019-08-custom-image-for-wagtail
Browse files Browse the repository at this point in the history
Ka 2019 08 custom image for wagtail
  • Loading branch information
Magdalena Noffke committed Aug 22, 2019
2 parents f637731 + d8c77f9 commit 6a6a5d8
Show file tree
Hide file tree
Showing 23 changed files with 438 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 2.2.4 on 2019-08-22 09:41

from django.db import migrations, models
import django.db.models.deletion


def set_custom_image_id(apps, schema_editor):
CustomImage = apps.get_model('a4_candy_cms_images', 'CustomImage')
FormPage = apps.get_model('a4_candy_cms_contacts', 'FormPage')

for page in FormPage.objects.all():
if page.contact_person_image:
image = page.contact_person_image
page.custom_contact_person_image_id = CustomImage.objects.get(id=image.id)
page.save()


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_images', '0002_copy_images'),
('a4_candy_cms_contacts', '0003_add_contact_person_data'),
]

operations = [
migrations.AddField(
model_name='formpage',
name='custom_contact_person_image',
field=models.ForeignKey(blank=True, help_text='The Image will be shown besides the name of the contact person', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='a4_candy_cms_images.CustomImage', verbose_name='Image of contact person'),
),
migrations.RunPython(set_custom_image_id),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 2.2.4 on 2019-08-22 11:19

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_contacts', '0004_formpage_custom_contact_person_image'),
]

operations = [
migrations.RemoveField(
model_name='formpage',
name='contact_person_image',
),
]
18 changes: 18 additions & 0 deletions apps/cms/contacts/migrations/0006_rename_customimage_to_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-08-22 11:25

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_contacts', '0005_remove_formpage_contact_person_image'),
]

operations = [
migrations.RenameField(
model_name='formpage',
old_name='custom_contact_person_image',
new_name='contact_person_image',
),
]
3 changes: 2 additions & 1 deletion apps/cms/contacts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ class FormPage(AbstractEmailForm):
thank_you_text_de = models.TextField(blank=True)

contact_person_name = models.CharField(max_length=100, blank=True)

contact_person_image = models.ForeignKey(
'wagtailimages.Image',
'a4_candy_cms_images.CustomImage',
null=True,
blank=True,
on_delete=models.SET_NULL,
Expand Down
1 change: 1 addition & 0 deletions apps/cms/images/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
default_app_config = 'apps.cms.images.apps.Config'
6 changes: 6 additions & 0 deletions apps/cms/images/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class Config(AppConfig):
name = 'apps.cms.images'
label = 'a4_candy_cms_images'
64 changes: 64 additions & 0 deletions apps/cms/images/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Generated by Django 2.2.4 on 2019-08-22 08:07

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
import wagtail.core.models
import wagtail.images.models
import wagtail.search.index


class Migration(migrations.Migration):

initial = True

dependencies = [
('wagtailcore', '0041_group_collection_permissions_verbose_name_plural'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('taggit', '0002_auto_20150616_2121'),
]

operations = [
migrations.CreateModel(
name='CustomImage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='title')),
('file', models.ImageField(height_field='height', upload_to=wagtail.images.models.get_upload_to, verbose_name='file', width_field='width')),
('width', models.IntegerField(editable=False, verbose_name='width')),
('height', models.IntegerField(editable=False, verbose_name='height')),
('created_at', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='created at')),
('focal_point_x', models.PositiveIntegerField(blank=True, null=True)),
('focal_point_y', models.PositiveIntegerField(blank=True, null=True)),
('focal_point_width', models.PositiveIntegerField(blank=True, null=True)),
('focal_point_height', models.PositiveIntegerField(blank=True, null=True)),
('file_size', models.PositiveIntegerField(editable=False, null=True)),
('file_hash', models.CharField(blank=True, editable=False, max_length=40)),
('caption_en', models.CharField(blank=True, max_length=255)),
('caption_de', models.CharField(blank=True, max_length=255)),
('collection', models.ForeignKey(default=wagtail.core.models.get_root_collection_id, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailcore.Collection', verbose_name='collection')),
('tags', taggit.managers.TaggableManager(blank=True, help_text=None, through='taggit.TaggedItem', to='taggit.Tag', verbose_name='tags')),
('uploaded_by_user', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='uploaded by user')),
],
options={
'abstract': False,
},
bases=(wagtail.search.index.Indexed, models.Model),
),
migrations.CreateModel(
name='CustomRendition',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('filter_spec', models.CharField(db_index=True, max_length=255)),
('file', models.ImageField(height_field='height', upload_to=wagtail.images.models.get_rendition_upload_to, width_field='width')),
('width', models.IntegerField(editable=False)),
('height', models.IntegerField(editable=False)),
('focal_point_key', models.CharField(blank=True, default='', editable=False, max_length=16)),
('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='renditions', to='a4_candy_cms_images.CustomImage')),
],
options={
'unique_together': {('image', 'filter_spec', 'focal_point_key')},
},
),
]
41 changes: 41 additions & 0 deletions apps/cms/images/migrations/0002_copy_images.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Generated by Django 2.2.4 on 2019-08-22 09:16

from django.db import migrations


def copy_images(apps, schema_editor):
CustomImage = apps.get_model('a4_candy_cms_images', 'CustomImage')
Image = apps.get_model('wagtailimages', 'Image')

for image in Image.objects.all():
CustomImage.objects.create(
id = image.id,
title = image.title,
file = image.file,
width = image.width,
height = image.height,
created_at = image.created_at,
focal_point_x = image.focal_point_x,
focal_point_y = image.focal_point_y,
uploaded_by_user = image.uploaded_by_user,
file_size = image.file_size,
collection_id = image.collection_id
)


def delete_images(apps, schema_editor):
CustomImage = apps.get_model('a4_candy_cms_images', 'CustomImage')

CustomImage.objects.all().delete()


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_images', '0001_initial'),
('wagtailimages', '0019_delete_filter')
]

operations = [
migrations.RunPython(copy_images, delete_images),
]
Empty file.
29 changes: 29 additions & 0 deletions apps/cms/images/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from django.db import models
from wagtail.images.models import AbstractImage
from wagtail.images.models import AbstractRendition
from wagtail.images.models import Image

from apps.contrib.translations import TranslatedField


class CustomImage(AbstractImage):

caption_en = models.CharField(max_length=255, blank=True)
caption_de = models.CharField(max_length=255, blank=True)

admin_form_fields = Image.admin_form_fields + (
'caption_en', 'caption_de'
)

caption = TranslatedField('caption_de', 'caption_en')


class CustomRendition(AbstractRendition):
image = models.ForeignKey(CustomImage,
related_name='renditions',
on_delete=models.CASCADE)

class Meta:
unique_together = (
('image', 'filter_spec', 'focal_point_key'),
)
32 changes: 32 additions & 0 deletions apps/cms/news/migrations/0004_newspage_custom_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 2.2.4 on 2019-08-22 09:41

from django.db import migrations, models
import django.db.models.deletion


def set_custom_image_id(apps, schema_editor):
CustomImage = apps.get_model('a4_candy_cms_images', 'CustomImage')
NewsPage = apps.get_model('a4_candy_cms_news', 'NewsPage')

for page in NewsPage.objects.all():
if page.image:
image = page.image
page.custom_image_id = CustomImage.objects.get(id=image.id)
page.save()


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_images', '0002_copy_images'),
('a4_candy_cms_news', '0003_add_translatable_image_caption'),
]

operations = [
migrations.AddField(
model_name='newspage',
name='custom_image',
field=models.ForeignKey(blank=True, help_text='The Image that is shown on the news item page and the news index page', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='a4_candy_cms_images.CustomImage', verbose_name='News Header Image'),
),
migrations.RunPython(set_custom_image_id),
]
25 changes: 25 additions & 0 deletions apps/cms/news/migrations/0005_remove_newspage_image_and_caption.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 2.2.4 on 2019-08-22 11:19

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_news', '0004_newspage_custom_image'),
]

operations = [
migrations.RemoveField(
model_name='newspage',
name='image',
),
migrations.RemoveField(
model_name='newspage',
name='image_caption_de',
),
migrations.RemoveField(
model_name='newspage',
name='image_caption_en',
),
]
18 changes: 18 additions & 0 deletions apps/cms/news/migrations/0006_rename_customimage_to_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-08-22 11:25

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_news', '0005_remove_newspage_image_and_caption'),
]

operations = [
migrations.RenameField(
model_name='newspage',
old_name='custom_image',
new_name='image',
),
]
14 changes: 1 addition & 13 deletions apps/cms/news/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def get_context(self, request):

class NewsPage(Page):
image = models.ForeignKey(
'wagtailimages.Image',
'a4_candy_cms_images.CustomImage',
null=True,
blank=True,
on_delete=models.SET_NULL,
Expand All @@ -79,11 +79,6 @@ class NewsPage(Page):
"and the news index page"
)

image_caption_de = models.TextField(
max_length=400, blank=True, null=True, verbose_name="Image Caption")
image_caption_en = models.TextField(
max_length=400, blank=True, null=True, verbose_name="Image Caption")

title_de = models.CharField(
max_length=250, blank=True, verbose_name="Title")
title_en = models.CharField(
Expand All @@ -109,11 +104,6 @@ class NewsPage(Page):
('html', blocks.RawHTMLBlock())
], blank=True)

image_caption = TranslatedField(
'image_caption_de',
'image_caption_en'
)

subtitle = TranslatedField(
'title_de',
'title_en'
Expand All @@ -132,14 +122,12 @@ class NewsPage(Page):
en_content_panels = [
FieldPanel('title_en'),
FieldPanel('teaser_en'),
FieldPanel('image_caption_en'),
StreamFieldPanel('body_streamfield_en')
]

de_content_panels = [
FieldPanel('title_de'),
FieldPanel('teaser_de'),
FieldPanel('image_caption_de'),
StreamFieldPanel('body_streamfield_de')
]

Expand Down
32 changes: 32 additions & 0 deletions apps/cms/pages/migrations/0020_homepage_custom_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 2.2.4 on 2019-08-22 09:41

from django.db import migrations, models
import django.db.models.deletion


def set_custom_image_id(apps, schema_editor):
CustomImage = apps.get_model('a4_candy_cms_images', 'CustomImage')
HomePage = apps.get_model('a4_candy_cms_pages', 'HomePage')

for page in HomePage.objects.all():
if page.image:
image = page.image
page.custom_image_id = CustomImage.objects.get(id=image.id)
page.save()


class Migration(migrations.Migration):

dependencies = [
('a4_candy_cms_images', '0002_copy_images'),
('a4_candy_cms_pages', '0019_auto_20190812_1458'),
]

operations = [
migrations.AddField(
model_name='homepage',
name='custom_image',
field=models.ForeignKey(blank=True, help_text='The Image that is shown on top of the page', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='a4_candy_cms_images.CustomImage', verbose_name='Header Image'),
),
migrations.RunPython(set_custom_image_id),
]
Loading

0 comments on commit 6a6a5d8

Please sign in to comment.