Files
aicheckv2/app/service/project_service.py
2025-02-19 16:57:49 +08:00

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)