Skip to content

Commit b6ee817

Browse files
committed
update: 스프린트, 튜토리얼 api 추가
1 parent 809b58c commit b6ee817

File tree

6 files changed

+68
-1
lines changed

6 files changed

+68
-1
lines changed

program/admin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from django.contrib import admin
2+
from import_export.admin import ImportExportModelAdmin
23

34
from .models import Program
5+
from .resources import ProgramResource
46

57

68
@admin.register(Program)
7-
class ProgramAdmin(admin.ModelAdmin):
9+
class ProgramAdmin(ImportExportModelAdmin):
810
list_display = [
911
"id",
1012
"host",
@@ -17,3 +19,4 @@ class ProgramAdmin(admin.ModelAdmin):
1719
]
1820
list_filter = ["program_type", ]
1921
search_fields = ["title", "host__username"]
22+
resource_class = ProgramResource

program/resources.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from uuid import uuid4
2+
from import_export.resources import ModelResource
3+
4+
from program.models import Program
5+
6+
7+
class ProgramResource(ModelResource):
8+
def before_import_row(self, row, row_number=None, **kwargs):
9+
row["id"] = uuid4()
10+
11+
def before_save_instance(self, instance: Program, using_transactions, dry_run):
12+
instance.id = uuid4()
13+
14+
class Meta:
15+
model = Program
16+
fields = [
17+
"id",
18+
"host",
19+
"title",
20+
"short_desc",
21+
"desc",
22+
"room",
23+
"program_type"
24+
]

program/serializers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from rest_framework import serializers
2+
3+
from program.models import Program
4+
5+
6+
class ProgramSerializer(serializers.ModelSerializer):
7+
class Meta:
8+
model = Program
9+
fields = [
10+
"id",
11+
"host",
12+
"title",
13+
"short_desc",
14+
"desc",
15+
"room"
16+
]

program/urls.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
from rest_framework.routers import DefaultRouter
33

44
from session.viewsets import SessionViewSet
5+
from program.viewsets import SprintListViewSet, TutorialListViewSet
56

7+
# TODO: 라우터 이름 변경
68
session_router = DefaultRouter()
79
session_router.register("sessions", SessionViewSet, basename="session")
10+
session_router.register("sprint", SprintListViewSet, basename="sprint")
11+
session_router.register("tutorial", TutorialListViewSet, basename="tutorial")
812

913
urlpatterns = [
1014
path("", include(session_router.urls)), # TODO: 이전됨 -> FE 수정 후 삭제 예정

program/views.py

Whitespace-only changes.

program/viewsets.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from rest_framework.permissions import IsAuthenticatedOrReadOnly
2+
from rest_framework.viewsets import ReadOnlyModelViewSet
3+
4+
from program.models import Program
5+
from program import models
6+
from program.serializers import ProgramSerializer
7+
8+
9+
class SprintListViewSet(ReadOnlyModelViewSet):
10+
queryset = Program.objects.filter(program_type=models.SPRINT).order_by("start_at").order_by("title")
11+
permission_classes = [IsAuthenticatedOrReadOnly]
12+
http_method_names = ["get"]
13+
serializer_class = ProgramSerializer
14+
15+
16+
class TutorialListViewSet(ReadOnlyModelViewSet):
17+
queryset = Program.objects.filter(program_type=models.TUTORIAL).order_by("start_at").order_by("title")
18+
permission_classes = [IsAuthenticatedOrReadOnly]
19+
http_method_names = ["get"]
20+
serializer_class = ProgramSerializer

0 commit comments

Comments
 (0)