59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from app.model.bussiness_model import ProjectImage
|
|
from app.model.bussiness_model import ProjectInfo
|
|
from app.model.schemas.project_info_schemas import ProjectInfoIn, ProjectInfoOut
|
|
from app.model.crud import project_info_crud as pic
|
|
from app.model.crud import project_image_crud as pimc
|
|
from app.util import os_utils as os
|
|
from app.util import random_utils as ru
|
|
from app.config.config_reader import datasets_url, runs_url, images_url
|
|
|
|
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
from fastapi import UploadFile
|
|
|
|
|
|
def add_project(info: ProjectInfoIn, session: Session, user_id: int):
|
|
"""
|
|
新建项目,完善数据,并创建对应的文件夹
|
|
:param info: 项目信息
|
|
:param session: 数据库session
|
|
:param user_id: 用户id
|
|
:return:
|
|
"""
|
|
project_info = ProjectInfo(**info.dict())
|
|
project_info.user_id = user_id
|
|
project_info.project_no = ru.random_str(6)
|
|
project_info.project_status = "0"
|
|
project_info.train_version = 0
|
|
os.create_folder(datasets_url, project_info.project_no)
|
|
os.create_folder(runs_url, project_info.project_no)
|
|
pic.add_project(project_info, session)
|
|
return project_info
|
|
|
|
|
|
def upload_project_image(project_info: ProjectInfoOut, files: List[UploadFile], session: Session):
|
|
"""
|
|
上传项目的图片
|
|
:param files: 上传的图片
|
|
:param project_info: 项目信息
|
|
:param session:
|
|
:return:
|
|
"""
|
|
images = []
|
|
for file in files:
|
|
image = ProjectImage()
|
|
image.project_id = project_info.id
|
|
# 保存原图
|
|
path = os.save_images(images_url, project_info.project_no, file=file)
|
|
image.image_url = path
|
|
# 生成缩略图
|
|
thumb_image_url = images_url + "\\thumb\\" + project_info.project_no + "\\" + ru.random_str(10) + ".jpg"
|
|
os.create_thumbnail(path, thumb_image_url)
|
|
image.thumb_image_url = thumb_image_url
|
|
images.append(image)
|
|
pimc.add_image_batch(images, session)
|
|
|
|
|
|
|
|
|