87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
from sqlalchemy.orm import Session
|
|
from sqlalchemy import and_
|
|
|
|
from app.model.bussiness_model import ProjectLabel as plModel
|
|
from app.model.schemas.project_label_schemas import ProjectLabel
|
|
|
|
|
|
def get_label_list(project_id: int, session: Session):
|
|
"""
|
|
根绝项目id获取标签列表
|
|
:param project_id: 项目id
|
|
:param session:
|
|
:return:
|
|
"""
|
|
label_list = session.query(plModel).filter(plModel.project_id == project_id).all()
|
|
label_list = [ProjectLabel.from_orm(label).dict() for label in label_list]
|
|
return label_list
|
|
|
|
|
|
def get_label_for_train(project_id: int, session: Session):
|
|
id_list = []
|
|
name_list = []
|
|
label_list = session.query(plModel).filter(plModel.project_id == project_id).all()
|
|
for label in label_list:
|
|
id_list.append(label.id)
|
|
name_list.append(label.label_name)
|
|
return id_list, name_list
|
|
|
|
|
|
def add_label(label: plModel, session: Session):
|
|
"""
|
|
新增标签
|
|
:param label:
|
|
:param session:
|
|
:return:
|
|
"""
|
|
session.add(label)
|
|
session.commit()
|
|
return label.id
|
|
|
|
|
|
def check_label_name(project_id: int, label_name: str, session: Session, label_id: int = None):
|
|
"""
|
|
检验标签名称是否存在
|
|
:param label_id:
|
|
:param project_id: 项目id
|
|
:param label_name: 标签名称
|
|
:param session:
|
|
:return:
|
|
"""
|
|
query = session.query(plModel)
|
|
filters = [plModel.project_id == project_id, plModel.label_name == label_name]
|
|
if label_id is not None:
|
|
filters.append(plModel.id != label_id)
|
|
query = query.filter(and_(*filters))
|
|
count = query.count()
|
|
if count > 0:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def update_label(label: plModel, session: Session):
|
|
"""
|
|
修改标签名称
|
|
:param label:
|
|
:param session:
|
|
:return:
|
|
"""
|
|
session.query(plModel).filter_by(id=label.id).update({
|
|
"label_name": label.label_name,
|
|
"meta": label.meta
|
|
})
|
|
session.commit()
|
|
|
|
|
|
def del_label(label_id: str, session: Session):
|
|
"""
|
|
根据标签id删除标签
|
|
:param label_id: 标签id
|
|
:param session:
|
|
:return:
|
|
"""
|
|
row_del = session.query(plModel).filter_by(id=label_id).delete()
|
|
session.commit()
|
|
return row_del
|