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