Skip to content

Commit 5eb2f6d

Browse files
committed
serializer 변경 및 deprecated api 제거
1 parent 9a2e15f commit 5eb2f6d

File tree

2 files changed

+8
-123
lines changed

2 files changed

+8
-123
lines changed

records/urls.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
from django.urls import path
22
from rest_framework.routers import SimpleRouter
33

4-
from records.views import RecordListAPIView, RecordCreateAPIView, ContentViewSet, RecordViewSet, RandomContentAPIView
4+
from records.views import ContentViewSet, RecordViewSet
55

66
app_name = 'records'
77

88
router = SimpleRouter()
9-
router.register("", RecordViewSet, basename="record")
9+
router.register("", RecordViewSet, basename="")
1010
router.register("content", ContentViewSet, basename="content")
1111

12-
urlpatterns = router.urls
13-
14-
urlpatterns += [
15-
path("records/list/", RecordListAPIView.as_view(), name="record_list"),
16-
path("records/create/", RecordCreateAPIView.as_view(), name="record_create"),
17-
path("contents/random/", RandomContentAPIView.as_view(), name="content_random"),
18-
]
12+
urlpatterns = router.urls

records/views.py

Lines changed: 5 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class RecordViewSet(
5757
serializer_class = RecordListSerializer
5858
permission_classes = [AllowAny]
5959

60+
def get_serializer_class(self):
61+
if self.action in ["create"]:
62+
return CreateRecordSerializer
63+
return RecordListSerializer
64+
6065
def get_target_dates(self) -> (datetime.date, datetime.date):
6166
q_target_date = self.request.query_params.get('target_date')
6267
if q_target_date:
@@ -145,117 +150,3 @@ def create(self, request, *args, **kwargs):
145150
record_serializer = RecordSerializer(record)
146151

147152
return Response(record_serializer.data)
148-
149-
150-
# deprecated under
151-
152-
153-
class RandomContentAPIView(GenericAPIView):
154-
serializer_class = ContentSerializer
155-
156-
def get_prev_filter(self) -> Q:
157-
prev = self.request.query_params.get('prev')
158-
if not prev:
159-
return Q()
160-
return ~Q(id=int(prev))
161-
162-
@swagger_auto_schema(deprecated=True, operation_description="to [GET] api/records/content/random/")
163-
def get(self, request: Request):
164-
prev_filter = self.get_prev_filter()
165-
queryset = Content.objects.filter(
166-
prev_filter
167-
).order_by(
168-
'?'
169-
).first()
170-
171-
serializer = self.get_serializer(queryset)
172-
return Response(serializer.data)
173-
174-
175-
class RecordCreateAPIView(CreateAPIView):
176-
serializer_class = RecordCreateSerializer
177-
permission_classes = [IsAuthenticated]
178-
179-
@swagger_auto_schema(
180-
deprecated=True,
181-
operation_description="to [POST] api/records/"
182-
)
183-
def post(self, request: Request, *args, **kwargs):
184-
serializer: RecordCreateSerializer = self.get_serializer(data=request.data)
185-
serializer.is_valid(raise_exception=True)
186-
187-
username = serializer.validated_data.get('username')
188-
content_id = serializer.validated_data.get('content_id')
189-
text = serializer.validated_data.get('text')
190-
191-
profile = CommonProfile.objects.get(name=username)
192-
193-
record = Record.objects.create(
194-
content_id=content_id,
195-
profile=profile,
196-
text=text
197-
)
198-
199-
record_serializer = RecordSerializer(record)
200-
201-
return Response(record_serializer.data)
202-
203-
204-
class RecordListAPIView(ListAPIView):
205-
serializer_class = RecordListSerializer
206-
permission_classes = [IsAuthenticated]
207-
208-
def get_target_dates(self) -> (datetime.date, datetime.date):
209-
q_target_date = self.request.query_params.get('target_date')
210-
if q_target_date:
211-
target_date_end = datetime.datetime.strptime(q_target_date, '%Y-%m-%d').date()
212-
else:
213-
target_date_end = datetime.datetime.today().astimezone(tz=KST).date()
214-
target_date_st = target_date_end - datetime.timedelta(days=6)
215-
return target_date_st, target_date_end
216-
217-
def get_queryset(self):
218-
target_date_st, target_date_end = self.get_target_dates()
219-
220-
queryset = Record.objects.filter(
221-
profile__user=self.request.user
222-
).annotate(
223-
record_date=TruncDate('created_at', tzinfo=KST)
224-
).filter(
225-
record_date__gte=target_date_st,
226-
record_date__lte=target_date_end
227-
).select_related(
228-
'content'
229-
).order_by(
230-
'created_at'
231-
)
232-
233-
return queryset
234-
235-
def list(self, request, *args, **kwargs):
236-
target_date_st, target_date_end = self.get_target_dates()
237-
queryset = self.filter_queryset(self.get_queryset())
238-
239-
serializer = RecordSerializer(queryset, many=True)
240-
records = serializer.data
241-
242-
results = []
243-
while target_date_st <= target_date_end:
244-
results.append(dict(
245-
date=target_date_st.strftime('%Y-%m-%d'),
246-
records=list(filter(
247-
lambda x: datetime.datetime.fromisoformat(x.get('created_at')).astimezone(
248-
KST).date() == target_date_st,
249-
records
250-
))
251-
))
252-
target_date_st += datetime.timedelta(days=1)
253-
return Response(results)
254-
255-
@swagger_auto_schema(
256-
deprecated=True,
257-
operation_description="to [GET] api/records/",
258-
query_serializer=RecordListQuerySerializer
259-
)
260-
def get(self, request, *args, **kwargs):
261-
return self.list(request, *args, **kwargs)

0 commit comments

Comments
 (0)