Skip to content

Commit 2821c0a

Browse files
authored
Merge pull request #41 from TUK-DP/refactor/37
[refactor] diary/view.py 리팩토링
2 parents dadb7f2 + 715d6e0 commit 2821c0a

File tree

4 files changed

+221
-122
lines changed

4 files changed

+221
-122
lines changed

config/basemodel.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
from django.db import models
2+
from django.http import JsonResponse
3+
from rest_framework import status
24

35

46
class BaseModel(models.Model):
57
created_at = models.DateTimeField(auto_now_add=True)
68
updated_at = models.DateTimeField(auto_now=True)
9+
710
# deleted_at = models.DateTimeField(blank=True, null=True)
811

912
class Meta:
1013
abstract = True
14+
15+
16+
class ApiResponse:
17+
@staticmethod
18+
def on_success(result, response_status=status.HTTP_200_OK):
19+
return JsonResponse({'isSuccess': True, 'result': result}, status=response_status)
20+
21+
@staticmethod
22+
def on_fail(message, response_status=status.HTTP_400_BAD_REQUEST):
23+
return JsonResponse({'isSuccess': False, 'message': message}, status=response_status)

diary/serializers.py

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from rest_framework import serializers
1+
from rest_framework import serializers, status
22

33
from users.models import User
44
from users.serializers import UserSafeSerializer
@@ -12,41 +12,47 @@ class Meta:
1212
model = Diary
1313
fields = '__all__'
1414

15+
1516
class DiarySimpleSerializer(serializers.ModelSerializer):
1617
user = UserSafeSerializer(read_only=True)
1718

1819
class Meta:
1920
model = Diary
2021
fields = ['id', 'user', 'title']
2122

23+
2224
class SentenceSerializer(serializers.ModelSerializer):
2325
diay = DiarySerializer(read_only=True)
2426

2527
class Meta:
2628
model = Sentences
2729
fields = '__all__'
2830

31+
2932
class SentenceSimpleSerializer(serializers.ModelSerializer):
3033
diary = DiarySimpleSerializer(read_only=True)
3134

3235
class Meta:
3336
model = Sentences
3437
fields = ['id', 'diary', 'sentence']
3538

39+
3640
class KeywordSerializer(serializers.ModelSerializer):
3741
sentence = SentenceSerializer(read_only=True)
3842

3943
class Meta:
4044
model = Keywords
4145
fields = '__all__'
4246

47+
4348
class QuestionSerializer(serializers.ModelSerializer):
4449
keyword = KeywordSerializer(read_only=True)
4550

4651
class Meta:
4752
model = Questions
4853
fields = '__all__'
4954

55+
5056
class DiaryCreateRequest(serializers.ModelSerializer):
5157
userId = serializers.IntegerField()
5258

@@ -60,19 +66,91 @@ def to_diary(self, user: User) -> DiarySerializer:
6066
newDiary.save(user=user)
6167
return newDiary
6268

69+
6370
class WriteRequest(serializers.Serializer):
6471
userId = serializers.IntegerField()
6572
title = serializers.CharField(max_length=100)
6673
content = serializers.CharField()
6774

75+
def is_valid(self, raise_exception=False):
76+
super_valid = super().is_valid()
77+
# 유효하지 않다면 False, 400 반환
78+
if not super_valid:
79+
return False, status.HTTP_400_BAD_REQUEST
80+
81+
# 유효하다면 userId가 존재하는지 확인
82+
is_user_exist = User.objects.filter(id=self.data['userId']).exists()
83+
84+
# 존재하지 않는다면 False, 404 반환
85+
if not is_user_exist:
86+
self._errors['userId'] = [f'userId: {self.data.get("userId")} 가 존재하지 않습니다.']
87+
return False, status.HTTP_404_NOT_FOUND
88+
89+
return True, status.HTTP_200_OK
90+
91+
6892
class UpdateRequest(serializers.Serializer):
6993
diaryId = serializers.IntegerField()
7094
userId = serializers.IntegerField()
7195
title = serializers.CharField(max_length=100)
7296
content = serializers.CharField()
7397

98+
def is_valid(self, raise_exception=False):
99+
super_valid = super().is_valid()
100+
# 유효하지 않다면 False, 400 반환
101+
if not super_valid:
102+
return False, status.HTTP_400_BAD_REQUEST
103+
104+
# userId가 존재하는지 확인
105+
is_user_exist = User.objects.filter(id=self.data['userId']).exists()
106+
# 존재하지 않는다면 False, 404 반환
107+
if not is_user_exist:
108+
self._errors['userId'] = [f'userId: {self.data.get("userId")} 가 존재하지 않습니다.']
109+
return False, status.HTTP_404_NOT_FOUND
110+
111+
# diaryId가 존재하는지 확인
112+
is_diary_exist = Diary.objects.filter(id=self.data['diaryId']).exists()
113+
# 존재하지 않는다면 False, 404 반환
114+
if not is_diary_exist:
115+
self._errors['diaryId'] = [f'diaryId: {self.data.get("diaryId")} 가 존재하지 않습니다.']
116+
return False, status.HTTP_404_NOT_FOUND
117+
118+
return True, status.HTTP_200_OK
119+
120+
74121
class GetUserRequest(serializers.Serializer):
75122
userId = serializers.IntegerField()
76123

124+
def is_valid(self, raise_exception=False):
125+
super_valid = super().is_valid()
126+
# 유효하지 않다면 False, 400 반환
127+
if not super_valid:
128+
return False, status.HTTP_400_BAD_REQUEST
129+
130+
# userId가 존재하는지 확인
131+
is_user_exist = User.objects.filter(id=self.data['userId']).exists()
132+
# 존재하지 않는다면 False, 404 반환
133+
if not is_user_exist:
134+
self._errors['userId'] = [f'userId: {self.data.get("userId")} 가 존재하지 않습니다.']
135+
return False, status.HTTP_404_NOT_FOUND
136+
137+
return True, status.HTTP_200_OK
138+
139+
77140
class GetDiaryRequest(serializers.Serializer):
78-
diaryId = serializers.IntegerField()
141+
diaryId = serializers.IntegerField()
142+
143+
def is_valid(self, raise_exception=False):
144+
super_valid = super().is_valid()
145+
# 유효하지 않다면 False, 400 반환
146+
if not super_valid:
147+
return False, status.HTTP_400_BAD_REQUEST
148+
149+
# diaryId가 존재하는지 확인
150+
is_diary_exist = Diary.objects.filter(id=self.data['diaryId']).exists()
151+
# 존재하지 않는다면 False, 404 반환
152+
if not is_diary_exist:
153+
self._errors['diaryId'] = [f'diaryId: {self.data.get("diaryId")} 가 존재하지 않습니다.']
154+
return False, status.HTTP_404_NOT_FOUND
155+
156+
return True, status.HTTP_200_OK

diary/urls.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
from django.urls import path, include
2-
from rest_framework.routers import DefaultRouter
3-
from .views import DiaryView, WriteView, GetDiarybyUserView, GetQuizView, UpdateView
1+
from django.urls import path
2+
from .views import WriteView, GetDiaryByUserView, GetQuizView, UpdateView
43

54
urlpatterns = [
6-
path('', DiaryView.as_view()),
75
path('write', WriteView.as_view()),
8-
path('list', GetDiarybyUserView.as_view()),
6+
path('list', GetDiaryByUserView.as_view()),
97
path('quiz', GetQuizView.as_view()),
108
path('update', UpdateView.as_view())
119
]

0 commit comments

Comments
 (0)