오윤석

video delete 안 되는 오류 수정

...@@ -268,59 +268,62 @@ class VideoList(APIView) : ...@@ -268,59 +268,62 @@ class VideoList(APIView) :
268 'date' : datetime.now() 268 'date' : datetime.now()
269 }, status = status.HTTP_400_BAD_REQUEST) 269 }, status = status.HTTP_400_BAD_REQUEST)
270 270
271 -# 비디오 수동 삭제 271 +# 비디오 확인
272 - def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name} 272 +class VideoDetail(APIView) :
273 + def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음
273 try : 274 try :
274 if request.auth == None : 275 if request.auth == None :
275 raise PermissionDenied 276 raise PermissionDenied
276 request_id = vid_name 277 request_id = vid_name
277 if request_id == 'None' : 278 if request_id == 'None' :
278 raise FieldDoesNotExist 279 raise FieldDoesNotExist
279 - session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION) 280 + queryset = Video.objects.filter(vid_name = request_id) # door_id 유효성 검색
280 - s3 = session.client('s3') 281 + if not queryset.exists():
281 - 282 + raise FieldDoesNotExist
282 - target = Video.objects.get(vid_name = request_id) 283 + download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환
283 - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4') 284 + if not download_url :
284 - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg') 285 + raise ObjectDoesNotExist
285 - target.delete() 286 + res = {
286 - return Response(status = status.HTTP_200_OK) 287 + 's3link' : download_url
288 + } # 응답 코드에 보낼 데이터
289 + return Response(res, status = status.HTTP_200_OK)
287 except FieldDoesNotExist as error : 290 except FieldDoesNotExist as error :
288 return Response({ 291 return Response({
289 'error' : "FieldDoesNotExist ", 292 'error' : "FieldDoesNotExist ",
290 'date' : datetime.now() 293 'date' : datetime.now()
291 }, status = status.HTTP_400_BAD_REQUEST) 294 }, status = status.HTTP_400_BAD_REQUEST)
295 + except ObjectDoesNotExist as error :
296 + return Response({
297 + 'error' : "ObjectDoesNotExist",
298 + 'date' : datetime.now()
299 + }, status = status.HTTP_404_NOT_FOUND)
292 except PermissionDenied as error : 300 except PermissionDenied as error :
293 return Response({ 301 return Response({
294 'error' : "PermissionDenied", 302 'error' : "PermissionDenied",
295 'date' : datetime.now() 303 'date' : datetime.now()
296 }, status = status.HTTP_400_BAD_REQUEST) 304 }, status = status.HTTP_400_BAD_REQUEST)
297 305
298 -# 비디오 확인(다운로드) 306 +# 비디오 수동 삭제
299 -class VideoDownload(APIView) : 307 + def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name}
300 - def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음
301 try : 308 try :
302 if request.auth == None : 309 if request.auth == None :
303 raise PermissionDenied 310 raise PermissionDenied
304 request_id = vid_name 311 request_id = vid_name
305 if request_id == 'None' : 312 if request_id == 'None' :
306 raise FieldDoesNotExist 313 raise FieldDoesNotExist
307 - download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환 314 + session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION)
308 - if not download_url : 315 + s3 = session.client('s3')
309 - raise ObjectDoesNotExist 316 +
310 - res = { 317 + target = Video.objects.get(vid_name = request_id)
311 - 's3link' : download_url 318 + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4')
312 - } # 응답 코드에 보낼 데이터 319 + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg')
313 - return Response(res, status = status.HTTP_200_OK) 320 + target.delete()
321 + return Response(status = status.HTTP_200_OK)
314 except FieldDoesNotExist as error : 322 except FieldDoesNotExist as error :
315 return Response({ 323 return Response({
316 'error' : "FieldDoesNotExist ", 324 'error' : "FieldDoesNotExist ",
317 'date' : datetime.now() 325 'date' : datetime.now()
318 }, status = status.HTTP_400_BAD_REQUEST) 326 }, status = status.HTTP_400_BAD_REQUEST)
319 - except ObjectDoesNotExist as error :
320 - return Response({
321 - 'error' : "ObjectDoesNotExist",
322 - 'date' : datetime.now()
323 - }, status = status.HTTP_404_NOT_FOUND)
324 except PermissionDenied as error : 327 except PermissionDenied as error :
325 return Response({ 328 return Response({
326 'error' : "PermissionDenied", 329 'error' : "PermissionDenied",
......
...@@ -21,7 +21,7 @@ from api import views ...@@ -21,7 +21,7 @@ from api import views
21 urlpatterns = [ 21 urlpatterns = [
22 path('admin/', admin.site.urls), 22 path('admin/', admin.site.urls),
23 path('api/video', views.VideoList.as_view()), 23 path('api/video', views.VideoList.as_view()),
24 - path('api/video/<str:vid_name>', views.VideoDownload.as_view()), 24 + path('api/video/<str:vid_name>', views.VideoDetail.as_view()),
25 path('auto/checkDate', views.CheckDate.as_view()), 25 path('auto/checkDate', views.CheckDate.as_view()),
26 path('api/setting', views.Recording.as_view()), 26 path('api/setting', views.Recording.as_view()),
27 path('api/auth', views.Login.as_view()), 27 path('api/auth', views.Login.as_view()),
......