Showing
1 changed file
with
28 additions
and
1 deletions
... | @@ -70,7 +70,34 @@ def create(request): | ... | @@ -70,7 +70,34 @@ def create(request): |
70 | 70 | ||
71 | # TODO: 휴지통 비우기 | 71 | # TODO: 휴지통 비우기 |
72 | def empty_trash(request): | 72 | def empty_trash(request): |
73 | - return {'result': True} | 73 | + # TODO: Auth |
74 | + request.user_id = 1 | ||
75 | + | ||
76 | + # Query Files | ||
77 | + files = File.objects.filter(owner_user_id=request.user_id, is_trahsed=1, deleted_at__isnull=True) | ||
78 | + | ||
79 | + # First Depth | ||
80 | + del_list = [] | ||
81 | + del_check = [] | ||
82 | + for del_file in files: | ||
83 | + del_check.append(del_file.id) | ||
84 | + | ||
85 | + # Child Depth | ||
86 | + while True: | ||
87 | + if not del_check: | ||
88 | + break | ||
89 | + child_files = File.objects.filter(parent_id__in=del_check) | ||
90 | + del_list.extend(del_check) | ||
91 | + del_check.clear() | ||
92 | + for del_file in child_files: | ||
93 | + del_check.append(del_file.id) | ||
94 | + | ||
95 | + # TODO: S3 Delete | ||
96 | + | ||
97 | + # Update | ||
98 | + File.objects.filter(id__in=del_list).update(is_trahsed=1, deleted_at=timezone.now()) | ||
99 | + | ||
100 | + return {'result': True, 'affected': del_list} | ||
74 | 101 | ||
75 | 102 | ||
76 | # TODO: 폴더/파일 조회, 파일 다운로드 | 103 | # TODO: 폴더/파일 조회, 파일 다운로드 | ... | ... |
-
Please register or login to post a comment