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