views.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import random
  2. import string
  3. from django.http import HttpResponse, JsonResponse
  4. from django.shortcuts import render
  5. from account.decorators import login_required
  6. from .models import Folder
  7. from file.models import File
  8. import json
  9. from account.models import get_user
  10. from utils.decorators import debug_view
  11. # Create your views here.
  12. DEBUG = 1
  13. @login_required
  14. def get_root_folder(request):
  15. # 获取根目录
  16. if request.method == 'POST':
  17. user = get_user(request)
  18. return JsonResponse({'code': 200, 'root_folder_id': user.get_root_folder().folder_id})
  19. elif request.method == 'GET' and DEBUG:
  20. return render(request, 'get_root_folder.html')
  21. else:
  22. return HttpResponse(status=400)
  23. # 在根目录下列出所有文件夹与文件
  24. @login_required
  25. def folder_list(request):
  26. if request.method == 'POST':
  27. data = request.POST
  28. folder_id = data.get('folder_id')
  29. user = get_user(request)
  30. try:
  31. folder = user.folders.get(folder_id=folder_id)
  32. except:
  33. print('无法访问')
  34. return JsonResponse({'code': 404, 'error': '无法访问'})
  35. children_folders = folder.children_folders.all()
  36. children_files = folder.children_files.all()
  37. children = [*map(lambda f: {'type': 'folder', **f.to_json()}, children_folders),
  38. *map(lambda f: {'type': 'file', **f.to_json()}, children_files)]
  39. return JsonResponse({'code': 200, 'children': children})
  40. elif request.method == 'GET' and DEBUG:
  41. return render(request, 'folder_list.html')
  42. else:
  43. return HttpResponse(status=400)
  44. # 父文件夹id 子文件夹名字
  45. # 增文件夹
  46. @login_required
  47. def add_folder(request):
  48. if request.method == 'POST':
  49. data = request.POST
  50. user = get_user(request)
  51. # folder_id_random = ''.join(random.sample(string.digits, 8))
  52. # father_folder = Folder.objects.filter(folder_id=data.get('father_folder_id')).get()
  53. father_folder_id = data.get('father_folder_id')
  54. try:
  55. father_folder = user.folders.get(folder_id=father_folder_id)
  56. except:
  57. print('上级文件夹不存在')
  58. return JsonResponse({'code': 421, 'error': '上级文件夹不存在'})
  59. folder_name = data.get('folder_name')
  60. Folder.objects.create(folder_name=folder_name, father_folder=father_folder, owner=user)
  61. return JsonResponse({'code': 200})
  62. elif request.method == 'GET' and DEBUG:
  63. return render(request, 'add_folder.html')
  64. else:
  65. return HttpResponse(status=400)
  66. # 删除文件夹
  67. @login_required
  68. def delete_folder(request):
  69. if request.method == 'POST':
  70. data = request.POST
  71. user = get_user(request)
  72. folder_id = data.get('folder_id')
  73. try:
  74. folder = user.folders.get(folder_id=folder_id)
  75. except:
  76. print('无此文件夹')
  77. return JsonResponse({'code': '421', 'error': '无此文件夹'})
  78. folder.delete()
  79. return JsonResponse({'code': 200})
  80. elif request.method == 'GET' and DEBUG:
  81. return render(request, 'delete_folder.html')
  82. else:
  83. return HttpResponse(status=400)