Toggle navigation
Toggle navigation
This project
Loading...
Sign in
cse437_e
/
smartdoorlock-backend
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
오윤석
2020-11-24 21:19:45 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a4d704244d8bdf657111c8ce0a95d7245c84195b
a4d70424
1 parent
7b8f80a7
video delete 안 되는 오류 수정
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
31 deletions
api/views.py
src/urls.py
api/views.py
View file @
a4d7042
...
...
@@ -266,37 +266,10 @@ class VideoList(APIView) :
return
Response
({
'error'
:
"PermissionDenied"
,
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
# 비디오 수동 삭제
def
delete
(
self
,
request
,
vid_name
,
format
=
None
)
:
# request URI에 vid_name가 포함되어있음 : api/video/{vid_name}
try
:
if
request
.
auth
==
None
:
raise
PermissionDenied
request_id
=
vid_name
if
request_id
==
'None'
:
raise
FieldDoesNotExist
session
=
boto3
.
session
.
Session
(
aws_access_key_id
=
S3_ACCESS_KEY_ID
,
aws_secret_access_key
=
S3_SECRET_ACCESS_KEY
,
region_name
=
AWS_REGION
)
s3
=
session
.
client
(
's3'
)
target
=
Video
.
objects
.
get
(
vid_name
=
request_id
)
s3
.
delete_object
(
Bucket
=
S3_STORAGE_BUCKET_NAME
,
Key
=
str
(
target
.
vid_name
)
+
'.mp4'
)
s3
.
delete_object
(
Bucket
=
S3_STORAGE_BUCKET_NAME
,
Key
=
str
(
target
.
vid_name
)
+
'_thumb.jpg'
)
target
.
delete
()
return
Response
(
status
=
status
.
HTTP_200_OK
)
except
FieldDoesNotExist
as
error
:
return
Response
({
'error'
:
"FieldDoesNotExist "
,
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
PermissionDenied
as
error
:
return
Response
({
'error'
:
"PermissionDenied"
,
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
# 비디오 확인
(다운로드)
class
VideoD
ownload
(
APIView
)
:
# 비디오 확인
class
VideoD
etail
(
APIView
)
:
def
get
(
self
,
request
,
vid_name
,
format
=
None
)
:
# 요청한 URI에 vid_name가 포함되어있음
try
:
if
request
.
auth
==
None
:
...
...
@@ -304,6 +277,9 @@ class VideoDownload(APIView) :
request_id
=
vid_name
if
request_id
==
'None'
:
raise
FieldDoesNotExist
queryset
=
Video
.
objects
.
filter
(
vid_name
=
request_id
)
# door_id 유효성 검색
if
not
queryset
.
exists
():
raise
FieldDoesNotExist
download_url
=
S3_ACCESS_URL
+
str
(
request_id
)
+
'.mp4'
# S3 다운로드 링크 변환
if
not
download_url
:
raise
ObjectDoesNotExist
...
...
@@ -327,6 +303,33 @@ class VideoDownload(APIView) :
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
# 비디오 수동 삭제
def
delete
(
self
,
request
,
vid_name
,
format
=
None
)
:
# request URI에 vid_name가 포함되어있음 : api/video/{vid_name}
try
:
if
request
.
auth
==
None
:
raise
PermissionDenied
request_id
=
vid_name
if
request_id
==
'None'
:
raise
FieldDoesNotExist
session
=
boto3
.
session
.
Session
(
aws_access_key_id
=
S3_ACCESS_KEY_ID
,
aws_secret_access_key
=
S3_SECRET_ACCESS_KEY
,
region_name
=
AWS_REGION
)
s3
=
session
.
client
(
's3'
)
target
=
Video
.
objects
.
get
(
vid_name
=
request_id
)
s3
.
delete_object
(
Bucket
=
S3_STORAGE_BUCKET_NAME
,
Key
=
str
(
target
.
vid_name
)
+
'.mp4'
)
s3
.
delete_object
(
Bucket
=
S3_STORAGE_BUCKET_NAME
,
Key
=
str
(
target
.
vid_name
)
+
'_thumb.jpg'
)
target
.
delete
()
return
Response
(
status
=
status
.
HTTP_200_OK
)
except
FieldDoesNotExist
as
error
:
return
Response
({
'error'
:
"FieldDoesNotExist "
,
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
PermissionDenied
as
error
:
return
Response
({
'error'
:
"PermissionDenied"
,
'date'
:
datetime
.
now
()
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
# 비디오 자동 삭제
class
CheckDate
(
APIView
)
:
def
delete
(
self
,
request
,
format
=
None
)
:
...
...
src/urls.py
View file @
a4d7042
...
...
@@ -21,7 +21,7 @@ from api import views
urlpatterns
=
[
path
(
'admin/'
,
admin
.
site
.
urls
),
path
(
'api/video'
,
views
.
VideoList
.
as_view
()),
path
(
'api/video/<str:vid_name>'
,
views
.
VideoD
ownload
.
as_view
()),
path
(
'api/video/<str:vid_name>'
,
views
.
VideoD
etail
.
as_view
()),
path
(
'auto/checkDate'
,
views
.
CheckDate
.
as_view
()),
path
(
'api/setting'
,
views
.
Recording
.
as_view
()),
path
(
'api/auth'
,
views
.
Login
.
as_view
()),
...
...
Please
register
or
login
to post a comment