Add custom image model

This commit is contained in:
Jake Howard 2022-06-28 18:54:11 +01:00
parent b8edb525dc
commit c23c03ec33
Signed by: jake
GPG key ID: 57AFB45680EDD477
8 changed files with 266 additions and 0 deletions

View file

@ -0,0 +1,35 @@
# Generated by Django 4.0.5 on 2022-06-28 17:52
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("images", "__first__"),
("blog", "0006_alter_bloglistpage_body_alter_blogpostpage_body"),
]
operations = [
migrations.AlterField(
model_name="bloglistpage",
name="hero_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
migrations.AlterField(
model_name="blogpostpage",
name="hero_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
]

View file

@ -0,0 +1,35 @@
# Generated by Django 4.0.5 on 2022-06-28 17:52
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("images", "__first__"),
("common", "0007_alter_contentpage_body_alter_listingpage_body"),
]
operations = [
migrations.AlterField(
model_name="contentpage",
name="hero_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
migrations.AlterField(
model_name="listingpage",
name="hero_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
]

View file

@ -0,0 +1,24 @@
# Generated by Django 4.0.5 on 2022-06-28 17:52
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("images", "__first__"),
("home", "0004_homepage_image"),
]
operations = [
migrations.AlterField(
model_name="homepage",
name="image",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="images.customimage",
),
),
]

View file

View file

@ -0,0 +1,154 @@
# Generated by Django 4.0.5 on 2022-06-28 17:52
import django.db.models.deletion
import taggit.managers
import wagtail.images.models
import wagtail.models.collections
import wagtail.search.index
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
("taggit", "0004_alter_taggeditem_content_type_alter_taggeditem_tag"),
("wagtailcore", "0069_log_entry_jsonfield"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
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, db_index=True, editable=False, max_length=40
),
),
(
"collection",
models.ForeignKey(
default=wagtail.models.collections.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.images.models.ImageFileMixin,
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="images.customimage",
),
),
],
options={
"unique_together": {("image", "filter_spec", "focal_point_key")},
},
bases=(wagtail.images.models.ImageFileMixin, models.Model),
),
]

View file

15
website/images/models.py Normal file
View file

@ -0,0 +1,15 @@
from django.db import models
from wagtail.images.models import AbstractImage, AbstractRendition
class CustomImage(AbstractImage):
pass
class CustomRendition(AbstractRendition):
image = models.ForeignKey(
CustomImage, on_delete=models.CASCADE, related_name="renditions"
)
class Meta:
unique_together = (("image", "filter_spec", "focal_point_key"),)

View file

@ -23,6 +23,7 @@ INSTALLED_APPS = [
"website.home", "website.home",
"website.search", "website.search",
"website.blog", "website.blog",
"website.images",
"website.contrib.code_block", "website.contrib.code_block",
"wagtail.contrib.forms", "wagtail.contrib.forms",
"wagtail.contrib.redirects", "wagtail.contrib.redirects",
@ -141,6 +142,8 @@ WAGTAILADMIN_BASE_URL = f"https://{BASE_HOSTNAME}"
DEFAULT_AUTO_FIELD = "django.db.models.AutoField" DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
WAGTAILIMAGES_IMAGE_MODEL = "images.CustomImage"
if DEBUG: if DEBUG:
# Add django-browser-reload # Add django-browser-reload
INSTALLED_APPS.append("django_browser_reload") INSTALLED_APPS.append("django_browser_reload")