Bläddra i källkod

Merge branch 'master' into ignatz

# Conflicts:
#	account/models.py
#	account/views.py
#	db.sqlite3
ignalxy 4 år sedan
förälder
incheckning
51ebd6bb37

BIN
1e.jpg


+ 0 - 1
account/models.py

@@ -104,7 +104,6 @@ class Profile(models.Model):
 # 信号接收函数,每当新建User实例的时候自动调用
 @receiver(post_save, sender=User)
 def create_user_profile(sender, instance, created, **kwargs):
-    # pass
     if created:
         Profile.objects.create(user=instance)
 

+ 38 - 0
file/interface.md

@@ -0,0 +1,38 @@
+# 上传文件
+******
+## 请求(POST)
+请求链接:file/upload_file
+
+file_path(文件路径)
+folder_id(文件夹id)
+文件
+## 返回值(http状态码+(列表))
+200:成功
+
+400:请求不合法
+
+# 下载文件
+******
+## 请求(POST)
+请求链接:file/download_file
+
+file_path(文件路径)
+## 返回值(文件)
+200:返回文件
+
+400:请求不合法
+
+# 删除文件
+******
+## 请求(POST)
+请求链接:file/delete_file
+
+file_path(文件路径)
+file_id(文件id)
+## 返回值(http状态码+列表)
+200:创建成功
+
+421:此文件不存在
+
+400:请求不合法
+

+ 21 - 9
file/views.py

@@ -6,6 +6,8 @@ from django.contrib.auth.decorators import login_required
 from file.models import File
 from django.http import FileResponse, JsonResponse, HttpResponse
 from django.utils import timezone
+
+from folder.models import Folder
 from .judgement_function import judge_filepath, format_size
 from django.utils.http import urlquote
 from django.contrib.auth.models import User
@@ -26,19 +28,18 @@ DEBUG = 1
 @login_required
 def upload_file(request):
     if request.method == "POST":
-        data = request.POST
-        file_obj = request.FILES.get('file')
+        file_obj = request.FILES.get('upload')
         file_type = judge_filepath(file_obj.name.split('.')[-1].lower())
         file_folder = request.POST.get('file_path')
         update_time = timezone.now().strftime("%Y-%m-%d %H:%M:%S")
         file_size = format_size(file_obj.size)
         file_name = file_obj.name
         save_path = BASE_DIR + '/' + file_folder
-        file_path = file_folder + '/' + file_name
+        file_path = file_folder + file_name
         file_id_1 = ''.join(random.sample(string.digits, 8))
         File.objects.create(file_id=file_id_1,
                             file_name=file_name,
-                            folder=file_folder,
+                            folder=Folder.objects.filter(folder_id=request.POST.get('folder_id')).get(),
                             file_path=file_path,
                             update_time=update_time,
                             file_size=file_size,
@@ -57,7 +58,8 @@ def upload_file(request):
 @login_required
 def download_file(request):
     if request.method == "POST":
-        file_path = request.GET.get('file_path')
+        print(request)
+        file_path = request.POST.get('file_path')
         file_name = file_path.split('/')[-1]
         file_dir = BASE_DIR + '/' + file_path
         file = open(file_dir, 'rb')
@@ -75,13 +77,23 @@ def download_file(request):
 @login_required
 def delete_file(request):
     if request.method == "POST":
-        file_path = request.GET.get('file_path')
-        File.objects.get(file_path=file_path, file_id=request.File.file_id).delete()
+        data = request.POST
+        file_path = data.get('file_path')
         try:
-            os.remove(BASE_DIR + '/' + file_path)
+            file = File.objects.filter(file_path=file_path, file_id=data.get('file_id')).get()
         except Exception as e:
             print(e)
-        return HttpResponse(status=200)
+        else:
+            if file:
+                file.delete()
+                try:
+                    os.remove(BASE_DIR + '//' + file_path)
+                except Exception as e:
+                    print(e)
+                return HttpResponse(status=200)
+
+            else:
+                return HttpResponse(status=421)
     elif request.method == 'GET':
         if DEBUG:
             return render(request, 'delete_file.html')

+ 50 - 0
folder/interface.md

@@ -0,0 +1,50 @@
+# 请求根目录id与名称
+******
+## 请求(POST)
+请求链接:folder/get_first_folder
+
+无参数
+## 返回值(http状态码+(列表))
+200+列表:成功+根目录名称与id列表
+
+400:请求不合法
+
+# 请求根目录下所有文件
+******
+## 请求(POST)
+请求链接:folder/folder_list
+
+folder_id(群号)
+## 返回值(http状态码+(列表))
+200:返回目录下所有文件与id
+
+400:请求不合法
+
+# 请求新建文件夹
+******
+## 请求(POST)
+请求链接:folder/add_folder/
+
+father_folder_id(父节点id)
+folder_name(节点名称)
+## 返回值(http状态码+列表)
+200:创建成功
+
+422:此文件夹不存在
+
+400:请求不合法
+
+# 删除文件夹
+******
+## 请求(POST)
+请求链接:folder/delete_folder
+
+folder_id(文件夹id)
+## 返回值(http状态码)
+200:成功
+
+400:请求不合法
+
+421:无此文件夹
+
+

+ 1 - 0
folder/urls.py

@@ -6,4 +6,5 @@ urlpatterns = [
     path('folder_list/', views.folder_list, name='folder_list'),
     path('add_folder/', views.add_folder, name='add_folder'),
     path('delete_folder/', views.delete_folder, name='delete_folder'),
+    path('get_first_folder/', views.get_first_folder, name='get_first_folder'),
 ]

+ 35 - 10
folder/views.py

@@ -1,3 +1,6 @@
+import random
+import string
+
 from django.http import HttpResponse
 from django.shortcuts import render
 from django.contrib.auth.decorators import login_required
@@ -10,19 +13,35 @@ import json
 DEBUG = 1
 
 
+@login_required(login_url='/account/login/')
+def get_first_folder(request):
+    if request.method == 'POST':
+        # 获取所有根文件夹id
+        folders = Folder.objects.filter(father_folder=None)
+        response = []
+        for i in folders:
+            response.append([i.folder_name, i.folder_id])
+        return HttpResponse(json.dumps(response), status=200)
+    elif request.method == 'GET':
+        if DEBUG:
+            return render(request, 'folder_list.html')
+    else:
+        return HttpResponse(status=400)
+
+
 # 在根目录下列出所有文件夹与文件
 @login_required(login_url='/account/login/')
 def folder_list(request):
     if request.method == 'POST':
         data = request.POST
         # 获取所有文件夹
-        folders = Folder.objects.filter(father_folder__folder_id=data['folder_id']).get()
-        files = File.objects.filter(folder__folder_id=data['folder_id']).get()
+        folders = Folder.objects.filter(father_folder__folder_id=data['folder_id'])
+        files = File.objects.filter(folder__folder_id=data['folder_id'])
         response = []
         for i in folders:
-            response.append(i)
+            response.append(['folders', i.folder_name, i.folder_id])
         for i in files:
-            response.append(i)
+            response.append(['files', i.file_name, i.file_id, i.file_path, i.file_id, i.update_time, i.file_type, i.file_size])
         return HttpResponse(json.dumps(response), status=200)
     elif request.method == 'GET':
         if DEBUG:
@@ -31,19 +50,24 @@ def folder_list(request):
         return HttpResponse(status=400)
 
 
+# 父文件夹id 子文件夹名字
 # 增文件夹
 @login_required(login_url='/account/login/')
 def add_folder(request):
     if request.method == 'POST':
         data = request.POST
-        folder = Folder.objects.filter(father_folder__folder_id=data['folder_id']).get()
-        if not folder:
+        folder_id_random = ''.join(random.sample(string.digits, 8))
+        father_folder = Folder.objects.filter(folder_id=data['father_folder_id']).get()
+        print(data)
+        if not father_folder:
             # 查无此文件夹
             return HttpResponse(status=421)
         else:
-            Folder.objects.create(folder_id=data['folder_id'],
-                                  folder_name=data['folder_name'],
-                                  father_folder=folder)
+            if 'folder_name' in data:
+                print('yes')
+            Folder.objects.create(folder_id=folder_id_random,
+                                  folder_name=data.get("folder_name"),
+                                  father_folder=father_folder)
             return HttpResponse(status=200)
     elif request.method == 'GET':
         if DEBUG:
@@ -51,6 +75,7 @@ def add_folder(request):
     else:
         return HttpResponse(status=400)
 
+
 # 删除文件夹
 @login_required(login_url='/account/login/')
 def delete_folder(request):
@@ -67,4 +92,4 @@ def delete_folder(request):
         if DEBUG:
             return render(request, 'delete_folder.html')
     else:
-        return HttpResponse(status=400)
+        return HttpResponse(status=400)

+ 6 - 16
templates/add_folder.html

@@ -3,25 +3,15 @@
     <div>
         <form method="post" action=".">
             {% csrf_token %}
-            <!-- 昵称 -->
+            <!-- 文件夹名 -->
             <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
+                <label for="folder_name">文件夹名</label>
+                <input type="text" id="folder_name" name="folder_name">
             </div>
-            <!-- 邮箱 -->
+            <!-- 父文件夹id -->
             <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
-            <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
-            </div>
-            <!-- 确认密码 -->
-            <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
+                <label for="father_folder_id">父文件夹id</label>
+                <input type="text" id="father_folder_id" name="father_folder_id">
             </div>
             <!-- 提交按钮 -->
             <button type="submit">提交</button>

+ 5 - 15
templates/delete_file.html

@@ -5,23 +5,13 @@
             {% csrf_token %}
             <!-- 昵称 -->
             <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
+                <label for="file_path">file_path</label>
+                <input type="text" id="file_path" name="file_path">
             </div>
-            <!-- 邮箱 -->
-            <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
-            <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
-            </div>
-            <!-- 确认密码 -->
+            <!-- 昵称 -->
             <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
+                <label for="file_id">file_id</label>
+                <input type="text" id="file_id" name="file_id">
             </div>
             <!-- 提交按钮 -->
             <button type="submit">提交</button>

+ 3 - 17
templates/delete_folder.html

@@ -5,24 +5,10 @@
             {% csrf_token %}
             <!-- 昵称 -->
             <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
-            </div>
-            <!-- 邮箱 -->
-            <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
-            <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
-            </div>
-            <!-- 确认密码 -->
-            <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
+                <label for="folder_id">id</label>
+                <input type="text" id="folder_id" name="folder_id">
             </div>
+
             <!-- 提交按钮 -->
             <button type="submit">提交</button>
         </form>

+ 3 - 17
templates/download_file.html

@@ -5,24 +5,10 @@
             {% csrf_token %}
             <!-- 昵称 -->
             <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
-            </div>
-            <!-- 邮箱 -->
-            <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
-            <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
-            </div>
-            <!-- 确认密码 -->
-            <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
+                <label for="file_path">file_path</label>
+                <input type="text" id="file_path" name="file_path">
             </div>
+
             <!-- 提交按钮 -->
             <button type="submit">提交</button>
         </form>

+ 2 - 20
templates/folder_list.html

@@ -3,26 +3,8 @@
     <div>
         <form method="post" action=".">
             {% csrf_token %}
-            <!-- 昵称 -->
-            <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
-            </div>
-            <!-- 邮箱 -->
-            <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
-            <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
-            </div>
-            <!-- 确认密码 -->
-            <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
-            </div>
+
+
             <!-- 提交按钮 -->
             <button type="submit">提交</button>
         </form>

+ 8 - 15
templates/upload_file.html

@@ -1,30 +1,23 @@
 <!DOCTYPE html>
 <html lang="zh-cn">
     <div>
-        <form method="post" action=".">
+        <form method="post" enctype="multipart/form-data" action=".">
             {% csrf_token %}
             <!-- 昵称 -->
             <div>
-                <label for="username">昵称</label>
-                <input type="text" id="username" name="username">
+                <label for="file_path">file_path</label>
+                <input type="text" id="file_path" name="file_path">
             </div>
-            <!-- 邮箱 -->
-            <div>
-                <label for="email">邮箱</label>
-                <input type="text" id="email" name="email">
-            </div>
-            <!-- 密码 -->
+            <!-- 昵称 -->
             <div>
-                <label for="password">设置密码</label>
-                <input type="password" id="password" name="password" required>
+                <label for="folder_id">folder_id</label>
+                <input type="text" id="folder_id" name="folder_id">
             </div>
-            <!-- 确认密码 -->
             <div>
-                <label for="password2">确认密码</label>
-                <input type="password" id="password2" name="password2" required>
+                <input type="file" name="upload">
             </div>
             <!-- 提交按钮 -->
-            <button type="submit">提交</button>
+            <button type="submit" class="btn btn-success btn-block">提交</button>
         </form>
     </div>
 </html>