def create_category(): # 创建分类 params: Dict[str, Any] = parse_params_from_request() keys: List[str] = ["name"] for key in keys: if not params.get(key): raise ParameterException(message="{} 缺失".format(key)) name: str = params["name"] payload: Dict[str, int] = {} exists_model: Union[Category, None] = None try: exists_model = db.session.query(Category).filter_by(name=name) payload.setdefault("id", exists_model.id) except NoResultFound: exists_model = Category(name) db.session.add(exists_model) db.session.commit(exists_model) payload.setdefault("id", exists_model.id) except MultipleResultsFound: exists_model = db.session.query(Category).filter_by(name=name).first() payload.setdefault("id", exists_model.id) else: raise UnknownExeception() return response_success(body=payload)
def post(self): contentForm = _OneWrodForm() if not contentForm.validate(): raise ParameterException(unique_data=contentForm.errors) params: Dict[str, Any] = parse_params_from_request() content: str = contentForm.content.data # 根据content字符判断是否重复 exists_model: Union[OneWordModel, None] = None payload: Dict[str, int] = {} try: exists_model = db.session.query(OneWordModel).filter_by( content=content).one() payload.setdefault("id", exists_model.id) except NoResultFound: translate: Union[str, None] = params.get("translate") picture: Union[str, None] = params.get("picture") model: OneWordModel = OneWordModel(content=content, translate=translate, picture=picture, author=params.get("author")) db.session.add(model) db.session.commit() payload.setdefault("id", model.id) except MultipleResultsFound: exists_model = db.session.query(OneWordModel).filter_by( content=content).first() payload.setdefault("id", exists_model.id) except Exception as e: raise e return response_success(body=payload)
def get_site_by_categories(): # 根据传入的分类id,来获得分页的网站数据 params: Dict[str, Any] = parse_params_from_request() category_ids: List[int] = params.get("category_ids") or [] models: List[WebSite] = db.session.query(WebSite).filter( WebSite.category_id.in_(category_ids)).all() or [] payload: List[Dict[str, Union[str, int]]] = [m.to_dict() for m in models] return response_success(body=payload)
def list_rss(): params = parse_params_from_request() # pages pages = params.get('pages') or 0 limit = params.get('limit') or 10 payload = [ item.get_info() for item in RssModel.query.filter( RssModel.rss_state != 1).limit(limit).offset(pages * limit).all() ] return response_success(payload)
def query_rss_content(): params = parse_params_from_request() # pages pages = int(params.get('pages') or '0') limit = int(params.get('limit') or '10') query = RssContentModel.query.filter().order_by( RssContentModel.published_time.desc()).limit(limit).offset(pages * limit) items = query.all() payload = [item.get_info() for item in items] return response_success(payload)
def __init__(self): params = parse_params_from_request() super(FlaskAPIForm, self).__init__(data=params)