Skip to content

Commit b76dc84

Browse files
committed
feat: add MediaRendition model
1 parent 43f4ac7 commit b76dc84

2 files changed

Lines changed: 80 additions & 0 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Generated by Django 5.2.6 on 2025-09-29 09:56
2+
3+
import django.db.models.deletion
4+
5+
from django.conf import settings
6+
from django.db import migrations, models
7+
8+
9+
class Migration(migrations.Migration):
10+
dependencies = [
11+
("wagtailmedia", "0005_alter_media_options"),
12+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name="MediaRendition",
18+
fields=[
19+
(
20+
"id",
21+
models.AutoField(
22+
auto_created=True,
23+
primary_key=True,
24+
serialize=False,
25+
verbose_name="ID",
26+
),
27+
),
28+
("format_spec", models.JSONField()),
29+
("file", models.FileField(upload_to="media", verbose_name="file")),
30+
(
31+
"created_at",
32+
models.DateTimeField(auto_now_add=True, verbose_name="created at"),
33+
),
34+
(
35+
"created_by",
36+
models.ForeignKey(
37+
blank=True,
38+
editable=False,
39+
null=True,
40+
on_delete=django.db.models.deletion.SET_NULL,
41+
to=settings.AUTH_USER_MODEL,
42+
verbose_name="created by",
43+
),
44+
),
45+
(
46+
"media",
47+
models.ForeignKey(
48+
on_delete=django.db.models.deletion.CASCADE,
49+
related_name="renditions",
50+
to="wagtailmedia.media",
51+
),
52+
),
53+
],
54+
),
55+
]

src/wagtailmedia/models.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,31 @@ class Media(AbstractMedia):
161161
pass
162162

163163

164+
class MediaRendition(models.Model):
165+
media = models.ForeignKey(
166+
wagtailmedia_settings.MEDIA_MODEL,
167+
on_delete=models.CASCADE,
168+
related_name="renditions",
169+
)
170+
171+
format_spec = models.JSONField()
172+
file = models.FileField(upload_to="media", verbose_name=_("file"))
173+
174+
created_at = models.DateTimeField(verbose_name=_("created at"), auto_now_add=True)
175+
created_by = models.ForeignKey(
176+
settings.AUTH_USER_MODEL,
177+
verbose_name=_("created by"),
178+
null=True,
179+
blank=True,
180+
editable=False,
181+
on_delete=models.SET_NULL,
182+
)
183+
184+
@property
185+
def url(self):
186+
return self.file.url
187+
188+
164189
def get_media_model():
165190
from django.apps import apps
166191

0 commit comments

Comments
 (0)