| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from account.decorators import login_required
- from .models import Folder
- from account.models import get_user
- from utils.decorators import debug_view
- from utils.http import make_json_response
- from utils.permission import can_delete
- # Create your views here.
- @debug_view('username', 'token')
- @login_required
- def get_root_folder(request):
- # 获取根目录
- user = get_user(request)
- return make_json_response(root_folder_id=user.get_root_folder().folder_id)
- # 在根目录下列出所有文件夹与文件
- @debug_view('username', 'token', 'folder_id')
- @login_required
- def folder_list(request):
- data = request.POST
- user = get_user(request)
- folder_id = data.get('folder_id')
- try:
- folder = Folder.objects.get(folder_id=folder_id)
- except:
- return make_json_response(code=400, error='文件夹不存在')
- if not folder.check_permission(user=user):
- return make_json_response(code=404, error='没有权限')
- children_folders = folder.children_folders.all()
- children_files = folder.children_files.all()
- children = [*map(lambda f: {'type': 'folder', **f.to_json()}, children_folders),
- *map(lambda f: {'type': 'file', **f.to_json()}, children_files)]
- return make_json_response(children=children)
- # 增文件夹
- @debug_view('username', 'token', 'father_folder_id', 'folder_name')
- @login_required
- def add_folder(request):
- if request.method == 'POST':
- data = request.POST
- user = get_user(request)
- # folder_id_random = ''.join(random.sample(string.digits, 8))
- # father_folder = Folder.objects.filter(folder_id=data.get('father_folder_id')).get()
- father_folder_id = data.get('father_folder_id')
- try:
- father_folder = user.folders.get(folder_id=father_folder_id)
- except:
- print('上级文件夹不存在')
- return JsonResponse({'code': 421, 'error': '上级文件夹不存在'})
- folder_name = data.get('folder_name')
- print(f'folder_name={folder_name} father_folder_id={father_folder_id}')
- Folder.objects.create(folder_name=folder_name, father_folder=father_folder, owner=user)
- return JsonResponse({'code': 200})
- elif request.method == 'GET' and DEBUG:
- return render(request, 'add_folder.html')
- else:
- return HttpResponse(status=400)
- user = get_user(request)
- data = request.POST
- father_folder_id = data.get('father_folder_id')
- folder_name = data.get('folder_name')
- try:
- father_folder = Folder.objects.get(folder_id=father_folder_id)
- except:
- return make_json_response(code=402, error='上级文件夹不存在')
- if not father_folder.check_permission(user=user):
- return make_json_response(code=404, error='没有权限')
- Folder.objects.create(folder_name=folder_name, father_folder=father_folder, owner=user, group=father_folder.group)
- return make_json_response()
- # 删除文件夹
- @debug_view('username', 'token', 'folder_id')
- @login_required
- def delete_folder(request):
- data = request.POST
- user = get_user(request)
- folder_id = data.get('folder_id')
- try:
- folder = Folder.objects.get(folder_id=folder_id)
- except:
- return make_json_response(code=421, error='无此文件夹')
- if not can_delete(user=user, f=folder):
- return make_json_response(code=404, error='没有删除文件的权限')
- folder.delete()
- return make_json_response()
|