Showing
1 changed file
with
66 additions
and
6 deletions
| 1 | -# 폴더/파일 목록 | 1 | +import json |
| 2 | +import uuid | ||
| 3 | +from django.utils import timezone | ||
| 4 | +from ..aws import sign | ||
| 5 | +from ..models import File, GroupUser | ||
| 6 | + | ||
| 7 | + | ||
| 8 | +# TODO: 폴더/파일 목록 | ||
| 2 | def list_item(request): | 9 | def list_item(request): |
| 3 | return {'result': True} | 10 | return {'result': True} |
| 4 | 11 | ||
| 5 | 12 | ||
| 6 | # 폴더 생성, 파일 업로드 | 13 | # 폴더 생성, 파일 업로드 |
| 7 | def create(request): | 14 | def create(request): |
| 8 | - return {'result': True} | 15 | + # TODO: Auth |
| 16 | + request.user_id = 1 | ||
| 17 | + | ||
| 18 | + # Load | ||
| 19 | + received = json.loads(request.body.decode('utf-8')) | ||
| 20 | + | ||
| 21 | + # Validate | ||
| 22 | + if 'parent_id' not in received \ | ||
| 23 | + or 'type' not in received \ | ||
| 24 | + or 'name' not in received: | ||
| 25 | + return {'result': False, 'error': '입력이 누락되었습니다.'} | ||
| 26 | + if (received['type'] != 'folder' and received['type'] != 'file') \ | ||
| 27 | + or received['name'] == '': | ||
| 28 | + return {'result': False, 'error': '입력이 잘못되었습니다.'} | ||
| 29 | + | ||
| 30 | + # Get Parent | ||
| 31 | + parent = File.objects.filter(id=received['parent_id'], is_trahsed=0, deleted_at__isnull=True) | ||
| 32 | + | ||
| 33 | + # Check Exists | ||
| 34 | + if len(parent) == 0: | ||
| 35 | + return {'result': False, 'error': '경로가 잘못되었습니다.'} | ||
| 36 | + | ||
| 37 | + # Check Owner | ||
| 38 | + is_auth = False | ||
| 39 | + if parent[0].owner_user_id == request.user_id: | ||
| 40 | + is_auth = True | ||
| 41 | + is_my_group = GroupUser.objects.filter(group_id=parent[0].owner_group_id, user_id=request.user_id) | ||
| 42 | + if len(is_my_group) != 0: | ||
| 43 | + is_auth = True | ||
| 44 | + if is_auth is False: | ||
| 45 | + return {'result': False, 'error': '경로가 잘못되었습니다.'} | ||
| 46 | + | ||
| 47 | + # Insert | ||
| 48 | + file_id = uuid.uuid4() | ||
| 49 | + File.objects.create( | ||
| 50 | + id=file_id, | ||
| 51 | + parent_id=received['parent_id'], | ||
| 52 | + owner_user_id=parent[0].owner_user_id, | ||
| 53 | + owner_group_id=parent[0].owner_group_id, | ||
| 54 | + uploader_id=request.user_id, | ||
| 55 | + type=received['type'], | ||
| 56 | + name=received['name'], | ||
| 57 | + size=0, | ||
| 58 | + created_at=timezone.now() | ||
| 59 | + ) | ||
| 60 | + | ||
| 61 | + # Return Folder | ||
| 62 | + if received['type'] == 'folder': | ||
| 63 | + return {'result': True, 'file_id': file_id} | ||
| 64 | + | ||
| 65 | + # Return File | ||
| 66 | + upload_url = 'https://khubox-files.khunet.net/%s' % file_id | ||
| 67 | + upload_url = sign(upload_url) | ||
| 68 | + return {'result': True, 'file_id': file_id, 'upload_url': upload_url} | ||
| 9 | 69 | ||
| 10 | 70 | ||
| 11 | -# 휴지통 비우기 | 71 | +# TODO: 휴지통 비우기 |
| 12 | def empty_trash(request): | 72 | def empty_trash(request): |
| 13 | return {'result': True} | 73 | return {'result': True} |
| 14 | 74 | ||
| 15 | 75 | ||
| 16 | -# 폴더/파일 조회, 파일 다운로드 | 76 | +# TODO: 폴더/파일 조회, 파일 다운로드 |
| 17 | def find_item(request, file_id): | 77 | def find_item(request, file_id): |
| 18 | return {'result': True} | 78 | return {'result': True} |
| 19 | 79 | ||
| 20 | 80 | ||
| 21 | -# 폴더/파일 수정 | 81 | +# TODO: 폴더/파일 수정 |
| 22 | def update_item(request, file_id): | 82 | def update_item(request, file_id): |
| 23 | return {'result': True} | 83 | return {'result': True} |
| 24 | 84 | ||
| 25 | 85 | ||
| 26 | -# 파일 복제 | 86 | +# TODO: 파일 복제 |
| 27 | def copy(request, file_id): | 87 | def copy(request, file_id): |
| 28 | return {'result': True} | 88 | return {'result': True} | ... | ... |
-
Please register or login to post a comment