From a4eeb2491249975460f0003ed2c826dda6f7d877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=9D=E5=B7=9D?= Date: Tue, 15 Nov 2022 15:50:00 +0800 Subject: [PATCH] changes --- App/Crud/ScoreCardCrud.py | 2 ++ App/Model/RatingConfigModel.py | 6 ++++++ App/Router/ScoreCardRouter.py | 10 +++++++++- App/Schema/ScoreCardSchema.py | 8 ++++++-- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/App/Crud/ScoreCardCrud.py b/App/Crud/ScoreCardCrud.py index f7c0c66..bef55af 100644 --- a/App/Crud/ScoreCardCrud.py +++ b/App/Crud/ScoreCardCrud.py @@ -50,11 +50,13 @@ def search_scorecard(db: Session, schema: Schema.SearchScoreCardReqBody): items = db.query(Model.ScoreCard).filter( or_(Model.ScoreCard.name.like("%{}%".format("" if schema.name is None else schema.name)), schema.name is None), + or_(Model.ScoreCard.major_category_id == schema.major_category_id, schema.major_category_id is None), or_(Model.ScoreCard.subcategory_id == schema.subcategory_id, schema.subcategory_id is None) ).offset((page-1)*pagesize).limit(pagesize).all() count = db.query(Model.ScoreCard).filter( or_(Model.ScoreCard.name.like("%{}%".format("" if schema.name is None else schema.name)), schema.name is None), + or_(Model.ScoreCard.major_category_id == schema.major_category_id, schema.major_category_id is None), or_(Model.ScoreCard.subcategory_id == schema.subcategory_id, schema.subcategory_id is None) ).count() diff --git a/App/Model/RatingConfigModel.py b/App/Model/RatingConfigModel.py index 555c856..ec41bb1 100644 --- a/App/Model/RatingConfigModel.py +++ b/App/Model/RatingConfigModel.py @@ -12,8 +12,10 @@ class ScoreCard(Base): id = Column(String(16), primary_key=True) name = Column(String(16), unique=True, index=True) description = Column(LONGTEXT) + major_category_id = Column(String(16), ForeignKey("scorecard_major_category.id")) subcategory_id = Column(String(16), ForeignKey("scorecard_subcategory.id")) + major_category = relationship("ScoreCardMajorCategory", backref="scorecard", uselist=False) subcategory = relationship("ScoreCardSubCategory", backref="scorecard", uselist=False) data_table = relationship("ScoreCardDataTable", backref="scorecard", uselist=False) index_table = relationship("ScoreCardIndexTable", backref="scorecard", uselist=False) @@ -23,6 +25,7 @@ class ScoreCard(Base): def search_result_format(self): __dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns} + __dict.update({"major_category": self.major_category.__str__()}) __dict.update({"subcategory": self.subcategory.__str__()}) __dict.pop("subcategory_id") __dict.pop("description") @@ -118,6 +121,9 @@ class ScoreCardMajorCategory(Base): subcategories = relationship("ScoreCardSubCategory", backref="scorecard_major_category") + def __str__(self): + return self.name + def dict(self): __dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns} __dict.update({"subcategories": [subcategory.dict() for subcategory in list(self.subcategories)]}) diff --git a/App/Router/ScoreCardRouter.py b/App/Router/ScoreCardRouter.py index 2c79d91..18e761c 100644 --- a/App/Router/ScoreCardRouter.py +++ b/App/Router/ScoreCardRouter.py @@ -10,7 +10,7 @@ from Utils.DataBase.SqlAlchemyUtils import get_db router = APIRouter( tags=["打分卡"], prefix="/api/model_store/scorecard", - dependencies=[Depends(rbac)] + # dependencies=[Depends(rbac)] ) @@ -20,6 +20,10 @@ def func(schema: Schema.CreateScoreCardReqBody, db: Session = Depends(get_db)): if item: raise HTTPException(status_code=202, detail="ScoreCard Already Existed") + item = CategoryCrud.get_major_category_by_id(db=db, _id=schema.major_category_id) + if not item: + raise HTTPException(status_code=404, detail="MajorCategory Not Found") + item = CategoryCrud.get_sub_category_by_id(db=db, _id=schema.subcategory_id) if not item: raise HTTPException(status_code=404, detail="Subcategory Not Found") @@ -48,6 +52,10 @@ def func(_id: str, schema: Schema.EditScoreCardReqBody, db: Session = Depends(ge if not item: raise HTTPException(status_code=404, detail="ScoreCard Not Found") + item = CategoryCrud.get_major_category_by_id(db=db, _id=schema.major_category_id) + if not item: + raise HTTPException(status_code=404, detail="MajorCategory Not Found") + if schema.subcategory_id: item = CategoryCrud.get_sub_category_by_id(db=db, _id=schema.subcategory_id) if not item: diff --git a/App/Schema/ScoreCardSchema.py b/App/Schema/ScoreCardSchema.py index ca9433e..2dbe956 100644 --- a/App/Schema/ScoreCardSchema.py +++ b/App/Schema/ScoreCardSchema.py @@ -1,5 +1,5 @@ -from typing import Optional, List -from pydantic import BaseModel, constr +from typing import List +from pydantic import BaseModel from Utils.Schemas.CommonSchema import EditBaseModel @@ -12,17 +12,20 @@ class CreateScoreCardDpAcAuthReqBody(BaseModel): class CreateScoreCardReqBody(BaseModel): name: str = None description: str = None + major_category_id: str = None subcategory_id: str = None class EditScoreCardReqBody(EditBaseModel): name: str = None description: str = None + major_category_id: str = None subcategory_id: str = None class SearchScoreCardReqBody(BaseModel): name: str = None + major_category_id: str = None subcategory_id: str = None page: int = 1 pagesize: int = 20 @@ -31,6 +34,7 @@ class SearchScoreCardReqBody(BaseModel): class SearchScoreCardResItem(BaseModel): id: str = None name: str = None + major_category: str = None subcategory: str = None