Showing
2 changed files
with
37 additions
and
10 deletions
... | @@ -22,7 +22,7 @@ from django.conf import settings | ... | @@ -22,7 +22,7 @@ from django.conf import settings |
22 | import jwt | 22 | import jwt |
23 | from django.http import HttpResponse, JsonResponse | 23 | from django.http import HttpResponse, JsonResponse |
24 | from khudrive.settings import AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_REGION, \ | 24 | from khudrive.settings import AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_REGION, \ |
25 | - AWS_STORAGE_BUCKET_NAME | 25 | + AWS_STORAGE_BUCKET_NAME, AWS_ENDPOINT_URL |
26 | 26 | ||
27 | 27 | ||
28 | class UserViewSet(viewsets.ModelViewSet): | 28 | class UserViewSet(viewsets.ModelViewSet): |
... | @@ -183,11 +183,15 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -183,11 +183,15 @@ class ItemViewSet(viewsets.ViewSet): |
183 | # url: items/11/ | 183 | # url: items/11/ |
184 | # 마지막 slash도 써주어야함 | 184 | # 마지막 slash도 써주어야함 |
185 | def get(self, request, pk): | 185 | def get(self, request, pk): |
186 | - s3 = boto3.client('s3', | 186 | + s3 = boto3.client( |
187 | - aws_access_key_id=AWS_ACCESS_KEY_ID, | 187 | + 's3', |
188 | - aws_secret_access_key=AWS_SECRET_ACCESS_KEY, | 188 | + region_name=AWS_REGION, |
189 | - aws_session_token=AWS_SESSION_TOKEN, | 189 | + aws_access_key_id=AWS_ACCESS_KEY_ID, |
190 | - config=Config(signature_version='s3v4')) | 190 | + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, |
191 | + aws_session_token=AWS_SESSION_TOKEN, | ||
192 | + endpoint_url=AWS_ENDPOINT_URL or None, | ||
193 | + config=Config(s3={'addressing_style': 'path'}) | ||
194 | + ) | ||
191 | s3_bucket = AWS_STORAGE_BUCKET_NAME | 195 | s3_bucket = AWS_STORAGE_BUCKET_NAME |
192 | 196 | ||
193 | item = Item.objects.filter(item_id=pk) | 197 | item = Item.objects.filter(item_id=pk) |
... | @@ -329,7 +333,7 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -329,7 +333,7 @@ class ItemViewSet(viewsets.ViewSet): |
329 | url_path='children', url_name='children') | 333 | url_path='children', url_name='children') |
330 | def children(self, request, pk): | 334 | def children(self, request, pk): |
331 | if request.method == 'GET': | 335 | if request.method == 'GET': |
332 | - children = Item.objects.filter(parent=pk, is_deleted=False) | 336 | + children = Item.objects.filter(parent=pk, is_deleted=False, status=True) |
333 | children_data = serializers.serialize("json", children) | 337 | children_data = serializers.serialize("json", children) |
334 | json_children = json.loads(children_data) | 338 | json_children = json.loads(children_data) |
335 | parent = Item.objects.filter(item_id=pk) # item | 339 | parent = Item.objects.filter(item_id=pk) # item |
... | @@ -380,7 +384,15 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -380,7 +384,15 @@ class ItemViewSet(viewsets.ViewSet): |
380 | url_path='upload', url_name='upload') | 384 | url_path='upload', url_name='upload') |
381 | def upload(self, request, pk): | 385 | def upload(self, request, pk): |
382 | if request.method == 'POST': | 386 | if request.method == 'POST': |
383 | - s3 = boto3.client('s3') | 387 | + s3 = boto3.client( |
388 | + 's3', | ||
389 | + region_name=AWS_REGION, | ||
390 | + aws_access_key_id=AWS_ACCESS_KEY_ID, | ||
391 | + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, | ||
392 | + aws_session_token=AWS_SESSION_TOKEN, | ||
393 | + endpoint_url=AWS_ENDPOINT_URL or None, | ||
394 | + config=Config(s3={'addressing_style': 'path'}) | ||
395 | + ) | ||
384 | s3_bucket = AWS_STORAGE_BUCKET_NAME | 396 | s3_bucket = AWS_STORAGE_BUCKET_NAME |
385 | 397 | ||
386 | # 파일 객체 생성 | 398 | # 파일 객체 생성 |
... | @@ -412,12 +424,19 @@ class ItemViewSet(viewsets.ViewSet): | ... | @@ -412,12 +424,19 @@ class ItemViewSet(viewsets.ViewSet): |
412 | 3600 | 424 | 3600 |
413 | ) | 425 | ) |
414 | 426 | ||
427 | + item = Item.objects.filter(item_id=upload_item.item_id) | ||
428 | + item_data = serializers.serialize("json", item) | ||
429 | + json_item = json.loads(item_data) | ||
430 | + res = json_item[0]['fields'] | ||
431 | + res['id'] = json_item[0]['pk'] | ||
432 | + | ||
415 | data = { | 433 | data = { |
416 | "signed_url": presigned_post, | 434 | "signed_url": presigned_post, |
417 | - 'url': 'https://%s.s3.amazonaws.com/%s' % (s3_bucket, file_name) | 435 | + 'url': '%s/%s' % (presigned_post["url"], file_name), |
436 | + 'item': res | ||
418 | } | 437 | } |
419 | 438 | ||
420 | - return Response({'presigned_post': presigned_post, 'proc_data': data}, status=status.HTTP_200_OK) | 439 | + return Response(data, status=status.HTTP_200_OK) |
421 | 440 | ||
422 | # url: /status/ | 441 | # url: /status/ |
423 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], | 442 | @action(methods=['POST'], detail=True, permission_classes=[AllowAny], | ... | ... |
secrets.json
0 → 100644
1 | +{ | ||
2 | + "AWS_SESSION_TOKEN": "", | ||
3 | + "AWS_SECRET_ACCESS_KEY": "secret_key", | ||
4 | + "AWS_ACCESS_KEY_ID": "access_key", | ||
5 | + "AWS_REGION": "us-west-2", | ||
6 | + "AWS_STORAGE_BUCKET_NAME": "bucket", | ||
7 | + "AWS_ENDPOINT_URL": "http://localhost:39000" | ||
8 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment