Skip to content

Commit 62bdd5c

Browse files
committed
feat: admin에 room 및 roomschedule 추가
1 parent 6debe96 commit 62bdd5c

File tree

6 files changed

+78
-2
lines changed

6 files changed

+78
-2
lines changed

app/admin_api/filtersets/event/presentation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ class PresentationAdminFilterSet(filters.FilterSet):
1111

1212
class PresentationSpeakerAdminFilterSet(filters.FilterSet):
1313
presentation = filters.UUIDFilter(field_name="presentation_id")
14+
15+
16+
class RoomScheduleAdminFilterSet(filters.FilterSet):
17+
room = filters.UUIDFilter(field_name="room_id")

app/admin_api/serializers/event/presentation.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
from core.const.serializer import COMMON_ADMIN_FIELDS
22
from core.serializer.base_abstract_serializer import BaseAbstractSerializer
33
from core.serializer.json_schema_serializer import JsonSchemaSerializer
4-
from event.presentation.models import Presentation, PresentationCategory, PresentationSpeaker, PresentationType
4+
from event.presentation.models import (
5+
Presentation,
6+
PresentationCategory,
7+
PresentationSpeaker,
8+
PresentationType,
9+
Room,
10+
RoomSchedule,
11+
)
512
from file.models import PublicFile
613
from rest_framework import serializers
714
from user.models import UserExt
@@ -62,3 +69,15 @@ class PresentationSpeakerAdminSerializer(BaseAbstractSerializer, JsonSchemaSeria
6269
class Meta:
6370
model = PresentationSpeaker
6471
fields = COMMON_ADMIN_FIELDS + ("presentation", "user", "image", "biography_ko", "biography_en")
72+
73+
74+
class RoomScheduleAdminSerializer(BaseAbstractSerializer, JsonSchemaSerializer, serializers.ModelSerializer):
75+
class Meta:
76+
model = RoomSchedule
77+
fields = ("room", "start_time", "end_time", "presentation")
78+
79+
80+
class RoomAdminSerializer(BaseAbstractSerializer, JsonSchemaSerializer, serializers.ModelSerializer):
81+
class Meta:
82+
model = Room
83+
fields = COMMON_ADMIN_FIELDS + ("event", "name_ko", "name_en")

app/admin_api/urls.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
PresentationCategoryAdminViewSet,
66
PresentationSpeakerAdminViewSet,
77
PresentationTypeAdminViewSet,
8+
RoomAdminViewSet,
9+
RoomScheduleAdminViewSet,
810
)
911
from admin_api.views.event.sponsor import SponsorAdminViewSet, SponsorTagAdminViewSet, SponsorTierAdminViewSet
1012
from admin_api.views.file import PublicFileAdminViewSet
@@ -33,6 +35,8 @@
3335
admin_event_router.register("presentationcategory", PresentationCategoryAdminViewSet)
3436
admin_event_router.register("presentation", PresentationAdminViewSet)
3537
admin_event_router.register("presentationspeaker", PresentationSpeakerAdminViewSet)
38+
admin_event_router.register("room", RoomAdminViewSet)
39+
admin_event_router.register("roomschedule", RoomScheduleAdminViewSet)
3640

3741
admin_modificationaudit_router = routers.SimpleRouter()
3842
admin_modificationaudit_router.register(

app/admin_api/views/event/presentation.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
PresentationAdminFilterSet,
55
PresentationCategoryAdminFilterSet,
66
PresentationSpeakerAdminFilterSet,
7+
RoomScheduleAdminFilterSet,
78
)
89
from admin_api.serializers.event.presentation import (
910
PresentationAdminSerializer,
1011
PresentationCategoryAdminSerializer,
1112
PresentationSpeakerAdminSerializer,
1213
PresentationTypeAdminSerializer,
14+
RoomAdminSerializer,
15+
RoomScheduleAdminSerializer,
1316
)
1417
from core.const.tag import OpenAPITag
1518
from core.permissions import IsSuperUser
@@ -20,6 +23,8 @@
2023
PresentationCategory,
2124
PresentationSpeaker,
2225
PresentationType,
26+
Room,
27+
RoomSchedule,
2328
)
2429
from rest_framework import viewsets
2530

@@ -59,3 +64,20 @@ class PresentationSpeakerAdminViewSet(JsonSchemaViewSet, viewsets.ModelViewSet):
5964
permission_classes = [IsSuperUser]
6065
filterset_class = PresentationSpeakerAdminFilterSet
6166
queryset = PresentationSpeaker.objects.filter_active().select_related("created_by", "updated_by", "deleted_by")
67+
68+
69+
@extend_schema_view(**{m: extend_schema(tags=[OpenAPITag.ADMIN_EVENT_PRESENTATION]) for m in ADMIN_METHODS})
70+
class RoomAdminViewSet(JsonSchemaViewSet, viewsets.ModelViewSet):
71+
http_method_names = ["get", "post", "patch", "delete"]
72+
serializer_class = RoomAdminSerializer
73+
permission_classes = [IsSuperUser]
74+
queryset = Room.objects.filter_active().select_related("created_by", "updated_by", "deleted_by")
75+
76+
77+
@extend_schema_view(**{m: extend_schema(tags=[OpenAPITag.ADMIN_EVENT_PRESENTATION]) for m in ADMIN_METHODS})
78+
class RoomScheduleAdminViewSet(JsonSchemaViewSet, viewsets.ModelViewSet):
79+
http_method_names = ["get", "post", "patch", "delete"]
80+
serializer_class = RoomScheduleAdminSerializer
81+
permission_classes = [IsSuperUser]
82+
filterset_class = RoomScheduleAdminFilterSet
83+
queryset = RoomSchedule.objects.filter_active().select_related("created_by", "updated_by", "deleted_by")
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 5.2 on 2025-07-26 06:42
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("presentation", "0010_alter_historicalpresentation_slideshow_url_and_more"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="room",
14+
name="name_en",
15+
field=models.CharField(max_length=256, null=True),
16+
),
17+
migrations.AddField(
18+
model_name="room",
19+
name="name_ko",
20+
field=models.CharField(max_length=256, null=True),
21+
),
22+
]

app/event/presentation/translation.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from event.presentation.models import Presentation, PresentationCategory, PresentationSpeaker, PresentationType
1+
from event.presentation.models import Presentation, PresentationCategory, PresentationSpeaker, PresentationType, Room
22
from modeltranslation.translator import TranslationOptions, register
33

44

@@ -20,3 +20,8 @@ class PresentationTranslationOptions(TranslationOptions):
2020
@register(PresentationSpeaker)
2121
class PresentationSpeakerTranslationOptions(TranslationOptions):
2222
fields = ("biography",)
23+
24+
25+
@register(Room)
26+
class RoomTranslationOptions(TranslationOptions):
27+
fields = ("name",)

0 commit comments

Comments
 (0)