| | import os |
| | import datetime |
| | from flask import Blueprint, request, send_from_directory |
| | from pymongo import MongoClient |
| | from werkzeug.utils import secure_filename |
| |
|
| |
|
| | from application.core.settings import settings |
| | mongo = MongoClient(settings.MONGO_URI) |
| | db = mongo["docsgpt"] |
| | conversations_collection = db["conversations"] |
| | vectors_collection = db["vectors"] |
| |
|
| | current_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
| |
|
| |
|
| | internal = Blueprint('internal', __name__) |
| | @internal.route("/api/download", methods=["get"]) |
| | def download_file(): |
| | user = secure_filename(request.args.get("user")) |
| | job_name = secure_filename(request.args.get("name")) |
| | filename = secure_filename(request.args.get("file")) |
| | save_dir = os.path.join(current_dir, settings.UPLOAD_FOLDER, user, job_name) |
| | return send_from_directory(save_dir, filename, as_attachment=True) |
| |
|
| |
|
| |
|
| | @internal.route("/api/upload_index", methods=["POST"]) |
| | def upload_index_files(): |
| | """Upload two files(index.faiss, index.pkl) to the user's folder.""" |
| | if "user" not in request.form: |
| | return {"status": "no user"} |
| | user = secure_filename(request.form["user"]) |
| | if "name" not in request.form: |
| | return {"status": "no name"} |
| | job_name = secure_filename(request.form["name"]) |
| | save_dir = os.path.join(current_dir, "indexes", user, job_name) |
| | if settings.VECTOR_STORE == "faiss": |
| | if "file_faiss" not in request.files: |
| | print("No file part") |
| | return {"status": "no file"} |
| | file_faiss = request.files["file_faiss"] |
| | if file_faiss.filename == "": |
| | return {"status": "no file name"} |
| | if "file_pkl" not in request.files: |
| | print("No file part") |
| | return {"status": "no file"} |
| | file_pkl = request.files["file_pkl"] |
| | if file_pkl.filename == "": |
| | return {"status": "no file name"} |
| | |
| | |
| | if not os.path.exists(save_dir): |
| | os.makedirs(save_dir) |
| | file_faiss.save(os.path.join(save_dir, "index.faiss")) |
| | file_pkl.save(os.path.join(save_dir, "index.pkl")) |
| | |
| | vectors_collection.insert_one( |
| | { |
| | "user": user, |
| | "name": job_name, |
| | "language": job_name, |
| | "location": save_dir, |
| | "date": datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S"), |
| | "model": settings.EMBEDDINGS_NAME, |
| | "type": "local", |
| | } |
| | ) |
| | return {"status": "ok"} |