Showing
2 changed files
with
34 additions
and
31 deletions
... | @@ -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()), | ... | ... |
-
Please register or login to post a comment