def post(self): post_parser = reqparse.RequestParser() post_parser.add_argument('name', type=str, required=True, help='the argument cannot be blank') post_parser.add_argument('article_ids', type=int, action='append', help='the argument cannot be blank') args = post_parser.parse_args() try: category = Category() category.name = args['name'] category.articles = [ Article.query.get_or_404(id) for id in args['article_ids'] ] if args['article_ids'] else [] db.session.add(category) db.session.commit() except sqlalchemy.exc.IntegrityError: db.session.rollback() return {'status': 400, 'msg': '字段冲突'}, 400 except sqlalchemy.exc.InvalidRequestError: db.session.rollback() return {'status': 400, 'msg': '字段冲突'}, 400 return {'status': 200, 'msg': '新建分类成功'}
def test_categories(self): category = Category() category.name = 'c' category.articles = [Article.query.get(1)] db.session.add(category) db.session.commit() r = self.client.get(self.url + '/categories', ) self.assertEqual(r.status_code, 200) text = r.get_data(as_text=True) self.assertTrue('name' in text and 'articles' in text)
def new_category(): try: category = request.json.get('category') article_ids = request.json.get('articles') except AttributeError: abort(400) print(category) if category: try: articles = [Article.query.get(id) for id in article_ids] except BaseException: abort(400) try: c = Category() c.name = category c.articles = articles db.session.add(c) db.session.commit() except sqlalchemy.exc.IntegrityError: return jsonify({'status': '400', 'msg': '分类名重复'}), 400 return jsonify({'status': 200}) return jsonify({'status': 404}), 404