오윤석

video delete 안 되는 오류 수정

...@@ -266,37 +266,10 @@ class VideoList(APIView) : ...@@ -266,37 +266,10 @@ class VideoList(APIView) :
266 return Response({ 266 return Response({
267 'error' : "PermissionDenied", 267 'error' : "PermissionDenied",
268 'date' : datetime.now() 268 'date' : datetime.now()
269 - }, status = status.HTTP_400_BAD_REQUEST) 269 + }, status = status.HTTP_400_BAD_REQUEST)
270 -
271 -# 비디오 수동 삭제
272 - def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name}
273 - try :
274 - if request.auth == None :
275 - raise PermissionDenied
276 - request_id = vid_name
277 - if request_id == 'None' :
278 - 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 - s3 = session.client('s3')
281 -
282 - target = Video.objects.get(vid_name = request_id)
283 - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4')
284 - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg')
285 - target.delete()
286 - return Response(status = status.HTTP_200_OK)
287 - except FieldDoesNotExist as error :
288 - return Response({
289 - 'error' : "FieldDoesNotExist ",
290 - 'date' : datetime.now()
291 - }, status = status.HTTP_400_BAD_REQUEST)
292 - except PermissionDenied as error :
293 - return Response({
294 - 'error' : "PermissionDenied",
295 - 'date' : datetime.now()
296 - }, status = status.HTTP_400_BAD_REQUEST)
297 270
298 -# 비디오 확인(다운로드) 271 +# 비디오 확인
299 -class VideoDownload(APIView) : 272 +class VideoDetail(APIView) :
300 def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음 273 def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음
301 try : 274 try :
302 if request.auth == None : 275 if request.auth == None :
...@@ -304,6 +277,9 @@ class VideoDownload(APIView) : ...@@ -304,6 +277,9 @@ class VideoDownload(APIView) :
304 request_id = vid_name 277 request_id = vid_name
305 if request_id == 'None' : 278 if request_id == 'None' :
306 raise FieldDoesNotExist 279 raise FieldDoesNotExist
280 + queryset = Video.objects.filter(vid_name = request_id) # door_id 유효성 검색
281 + if not queryset.exists():
282 + raise FieldDoesNotExist
307 download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환 283 download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환
308 if not download_url : 284 if not download_url :
309 raise ObjectDoesNotExist 285 raise ObjectDoesNotExist
...@@ -327,6 +303,33 @@ class VideoDownload(APIView) : ...@@ -327,6 +303,33 @@ class VideoDownload(APIView) :
327 'date' : datetime.now() 303 'date' : datetime.now()
328 }, status = status.HTTP_400_BAD_REQUEST) 304 }, status = status.HTTP_400_BAD_REQUEST)
329 305
306 +# 비디오 수동 삭제
307 + def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name}
308 + try :
309 + if request.auth == None :
310 + raise PermissionDenied
311 + request_id = vid_name
312 + if request_id == 'None' :
313 + raise FieldDoesNotExist
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)
315 + s3 = session.client('s3')
316 +
317 + target = Video.objects.get(vid_name = request_id)
318 + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4')
319 + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg')
320 + target.delete()
321 + return Response(status = status.HTTP_200_OK)
322 + except FieldDoesNotExist as error :
323 + return Response({
324 + 'error' : "FieldDoesNotExist ",
325 + 'date' : datetime.now()
326 + }, status = status.HTTP_400_BAD_REQUEST)
327 + except PermissionDenied as error :
328 + return Response({
329 + 'error' : "PermissionDenied",
330 + 'date' : datetime.now()
331 + }, status = status.HTTP_400_BAD_REQUEST)
332 +
330 # 비디오 자동 삭제 333 # 비디오 자동 삭제
331 class CheckDate(APIView) : 334 class CheckDate(APIView) :
332 def delete(self, request, format = None) : 335 def delete(self, request, format = None) :
......
...@@ -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()),
......