Showing
7 changed files
with
39 additions
and
12 deletions
.aws_key.json
deleted
100644 → 0
1 | -{ | ||
2 | - "aws" : { | ||
3 | - "access_key_id" : "AKIA5ZZ6DPFONI4VDIPH", | ||
4 | - "secret_access_key" : "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", | ||
5 | - "s3_bucket_name" : "khuproject2020", | ||
6 | - "s3_access_url" : "https://khuproject2020.s3.ap-northeast-2.amazonaws.com/" | ||
7 | - } | ||
8 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | from django.contrib import admin | 1 | from django.contrib import admin |
2 | - | 2 | +from .models import Video, Phone |
3 | # Register your models here. | 3 | # Register your models here. |
4 | +admin.site.register(Video) | ||
5 | +admin.site.register(Phone) | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
api/migrations/__init__.py
0 → 100644
File mode changed
1 | from django.db import models | 1 | from django.db import models |
2 | +from django.conf import settings | ||
2 | from django.utils import timezone | 3 | from django.utils import timezone |
3 | 4 | ||
4 | # Create your models here. | 5 | # Create your models here. |
... | @@ -6,7 +7,8 @@ class Phone(models.Model) : | ... | @@ -6,7 +7,8 @@ class Phone(models.Model) : |
6 | username = models.CharField(max_length = 255) | 7 | username = models.CharField(max_length = 255) |
7 | and_id = models.CharField(max_length = 255, primary_key = True) | 8 | and_id = models.CharField(max_length = 255, primary_key = True) |
8 | 9 | ||
10 | + | ||
9 | class Video(models.Model) : | 11 | class Video(models.Model) : |
10 | - vidname = models.CharField(max_length = 255) | 12 | + vidname = models.CharField(max_length = 255, primary_key = True) |
11 | created = models.DateTimeField(default = timezone.now) | 13 | created = models.DateTimeField(default = timezone.now) |
12 | s3_link = models.CharField(max_length = 255) | 14 | s3_link = models.CharField(max_length = 255) |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -15,12 +15,13 @@ from rest_framework.response import Response | ... | @@ -15,12 +15,13 @@ from rest_framework.response import Response |
15 | from boto3.session import Session | 15 | from boto3.session import Session |
16 | from src.settings import AWS_REGION | 16 | from src.settings import AWS_REGION |
17 | from src.settings import S3_ACCESS_URL | 17 | from src.settings import S3_ACCESS_URL |
18 | +from src.settings import S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME | ||
18 | 19 | ||
19 | from datetime import datetime, timedelta | 20 | from datetime import datetime, timedelta |
20 | # Create your views here. | 21 | # Create your views here. |
21 | 22 | ||
22 | class VideoDownload(APIView) : | 23 | class VideoDownload(APIView) : |
23 | - def get(self, request, format=None) : | 24 | + def get(self, request, format = None) : |
24 | try : | 25 | try : |
25 | request_id = request.GET.get('vidname') | 26 | request_id = request.GET.get('vidname') |
26 | if request_id == 'None' : | 27 | if request_id == 'None' : |
... | @@ -43,4 +44,32 @@ class VideoDownload(APIView) : | ... | @@ -43,4 +44,32 @@ class VideoDownload(APIView) : |
43 | 'date' : datetime.now() | 44 | 'date' : datetime.now() |
44 | }, status = status.HTTP_404_NOT_FOUND) | 45 | }, status = status.HTTP_404_NOT_FOUND) |
45 | 46 | ||
47 | +class VideoAutoDelete(APIView) : | ||
48 | + def post(self, request, format = None) : | ||
49 | + checkdate = datetime.now() + timedelta(days = -7) | ||
50 | + quaryset = Video.objects.filter(created__lt = checkdate) | ||
51 | + session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION) | ||
52 | + s3 = session.client('s3') | ||
53 | + for delvid in quaryset : | ||
54 | + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(delvid.vidname)) | ||
55 | + quaryset.delete() | ||
56 | + return Response(status = status.HTTP_200_OK) | ||
46 | 57 | ||
58 | +class VideoDelete(APIView) : | ||
59 | + def post(self, request, format = None) : | ||
60 | + try : | ||
61 | + request_id = request.GET.get('vidname') | ||
62 | + if request_id == 'None' : | ||
63 | + raise FieldDoesNotExist | ||
64 | + session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION) | ||
65 | + s3 = session.client('s3') | ||
66 | + | ||
67 | + target = Video.objects.get(vidname = request_id) | ||
68 | + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vidname)) | ||
69 | + target.delete() | ||
70 | + return Response(status = status.HTTP_200_OK) | ||
71 | + except FieldDoesNotExist as error : | ||
72 | + return Response({ | ||
73 | + 'error' : "FieldDoesNotExist ", | ||
74 | + 'date' : datetime.now() | ||
75 | + }, status = status.HTTP_400_BAD_REQUEST) | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -21,4 +21,6 @@ from api import views | ... | @@ -21,4 +21,6 @@ from api import views |
21 | urlpatterns = [ | 21 | urlpatterns = [ |
22 | path('admin/', admin.site.urls), | 22 | path('admin/', admin.site.urls), |
23 | path('api/videoDownload/', views.VideoDownload.as_view()), | 23 | path('api/videoDownload/', views.VideoDownload.as_view()), |
24 | + path('api/videoAutoDelete/', views.VideoAutoDelete.as_view()), | ||
25 | + path('api/videoDelete/', views.VideoDelete.as_view()), | ||
24 | ] | 26 | ] | ... | ... |
-
Please register or login to post a comment