Skip to content

Commit c4db19f

Browse files
committed
feat: 공개용 발표 자료 필드 추가
1 parent 27b788c commit c4db19f

File tree

4 files changed

+76
-2
lines changed

4 files changed

+76
-2
lines changed

app/admin_api/serializers/event/presentation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class PresentationAdminSerializer(BaseAbstractSerializer, JsonSchemaSerializer,
3434
image = serializers.PrimaryKeyRelatedField(
3535
queryset=PublicFile.objects.filter_active(), allow_null=True, required=False
3636
)
37+
public_slideshow_file = serializers.PrimaryKeyRelatedField(
38+
queryset=PublicFile.objects.filter_active(), allow_null=True, required=False
39+
)
3740

3841
class Meta:
3942
model = Presentation
@@ -45,6 +48,7 @@ class Meta:
4548
"summary_ko",
4649
"summary_en",
4750
"slideshow_url",
51+
"public_slideshow_file",
4852
"image",
4953
"description_ko",
5054
"description_en",
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Generated by Django 5.2.5 on 2025-08-24 06:16
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
dependencies = [
9+
("file", "0002_alter_publicfile_file"),
10+
("presentation", "0013_alter_roomschedule_presentation"),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name="historicalpresentation",
16+
name="public_slideshow_file",
17+
field=models.ForeignKey(
18+
blank=True,
19+
db_constraint=False,
20+
help_text="최종 외부 공개용 발표 자료",
21+
null=True,
22+
on_delete=django.db.models.deletion.DO_NOTHING,
23+
related_name="+",
24+
to="file.publicfile",
25+
),
26+
),
27+
migrations.AddField(
28+
model_name="presentation",
29+
name="public_slideshow_file",
30+
field=models.ForeignKey(
31+
blank=True,
32+
help_text="최종 외부 공개용 발표 자료",
33+
null=True,
34+
on_delete=django.db.models.deletion.PROTECT,
35+
related_name="+",
36+
to="file.publicfile",
37+
),
38+
),
39+
migrations.AlterField(
40+
model_name="historicalpresentation",
41+
name="slideshow_url",
42+
field=models.URLField(blank=True, default="", help_text="발표자가 제출한 발표 자료 URL", null=True),
43+
),
44+
migrations.AlterField(
45+
model_name="presentation",
46+
name="image",
47+
field=models.ForeignKey(
48+
blank=True,
49+
null=True,
50+
on_delete=django.db.models.deletion.PROTECT,
51+
related_name="+",
52+
to="file.publicfile",
53+
),
54+
),
55+
migrations.AlterField(
56+
model_name="presentation",
57+
name="slideshow_url",
58+
field=models.URLField(blank=True, default="", help_text="발표자가 제출한 발표 자료 URL", null=True),
59+
),
60+
]

app/event/presentation/models.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,16 @@ class Presentation(BaseAbstractModel):
8383
title = models.CharField(max_length=256)
8484
summary = models.TextField(blank=True, default="")
8585
description = MarkdownField(blank=True, default="")
86-
image = models.ForeignKey(PublicFile, on_delete=models.PROTECT, null=True, blank=True)
87-
slideshow_url = models.URLField(null=True, blank=True, default="")
86+
image = models.ForeignKey(PublicFile, on_delete=models.PROTECT, null=True, blank=True, related_name="+")
87+
slideshow_url = models.URLField(null=True, blank=True, default="", help_text="발표자가 제출한 발표 자료 URL")
88+
public_slideshow_file = models.ForeignKey(
89+
PublicFile,
90+
on_delete=models.PROTECT,
91+
null=True,
92+
blank=True,
93+
help_text="최종 외부 공개용 발표 자료",
94+
related_name="+",
95+
)
8896

8997
categories = models.ManyToManyField(to="PresentationCategory", through="PresentationCategoryRelation")
9098
objects: PresentationQuerySet = PresentationQuerySet.as_manager()

app/event/presentation/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class PresentationSerializer(serializers.ModelSerializer):
4545
speakers = PresentationSpeakerSerializer(many=True, read_only=True, source="active_speakers")
4646
room_schedules = RoomScheduleSerializer(many=True, read_only=True, source="active_room_schedules")
4747
call_for_presentation_schedules = CallForPresentationScheduleSerializer(many=True, read_only=True)
48+
public_slideshow_file = serializers.FileField(source="public_slideshow_file.file", read_only=True, allow_null=True)
4849

4950
class Meta:
5051
model = Presentation
@@ -54,6 +55,7 @@ class Meta:
5455
"summary",
5556
"description",
5657
"slideshow_url",
58+
"public_slideshow_file",
5759
"image",
5860
"categories",
5961
"speakers",

0 commit comments

Comments
 (0)