from flask import g, jsonify from app.libs.error_code import Success, DeleteSuccess from app.libs.redprint import RedPrint from app.libs.token_auth import auth from app.models.cart import Cart from app.validators.params import CartAddValidator, CartIdsValidator, Count api = RedPrint('cart') @api.route('', methods=['GET', 'POST']) @auth.login_required def get_cart(): uid = g.user.uid form = Count().validate_for_api() carts = Cart.get_cart_by_uid(uid, form.count.data, form.page.data) return jsonify(carts) @api.route('/add', methods=['GET', 'POST']) @auth.login_required def add_cart(): uid = g.user.uid form = CartAddValidator().validate_for_api() Cart.add_cart(uid, form.product_id.data, form.property_id.data, form.qty.data) return Success() @api.route('/del', methods=['POST'])
# _*_ coding: utf-8 _*_ """ Created by Allen7D on 2018/6/17. """ from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.models.category import Category from app.api_docs import category as api_doc __author__ = 'Allen7D' api = RedPrint(name='category', description='产品分类', api_doc=api_doc) @api.route('/all', methods=['GET']) @api.doc() def get_all_categories(): '''获取所有产品的分类''' categories = Category.get_all_categories() return Success(categories)
微信会分别给小程序和 API 返回支付结果 成功后,进行库存量的检查 成功,进行库存量的扣除;失败,返回一个支付失败的结果 """ from flask import g from app.libs.redprint import RedPrint from app.libs.error_code import Success from app.libs.token_auth import auth from app.service.order import Order as OrderService from app.validators.params import OrderPlace from app.api_docs.v1 import order as api_doc __author__ = 'Allen7D' api = RedPrint(name='order', description='订单', api_doc=api_doc) @api.route('', methods=['POST']) @auth.login_required @api.doc() def place_order(): '''提交订单(管理员不能调用)''' products = OrderPlace().validate_for_api().products.data order = OrderService() status = order.palce(uid=g.user.uid, o_products=products) return Success(status) @api.route('/<int:id>', methods=['GET']) @api.doc()
from flask import jsonify, request from flask_login import login_required import requests import json from app.libs.redprint import RedPrint from app.libs.cahce import cache from app.libs.api_exceptions import Success, ServerException from app.models import db, Article from app.validators import ArticleValidator from app.view_models import ArticleViewModel, ArticleViewModelCollection api = RedPrint('article') @api.route('', methods=['POST']) @login_required def create_article(): """ API描述 Url: POST /v1/article 描述:创建一篇文章 :param {'category_id': '', 'title': ''} :return {'id': '', 'title': '', 'category_id': '', 'sharing_status': ''} """ validate = ArticleValidator.create_validator(200).validate_for_api() with db.auto_commit(): article = Article() article.set_attrs(**validate.data)
# _*_ coding: utf-8 _*_ """ Created by Alimazing on 2019/4/4. 「pay接口」只能用户访问,CMS管理员不能反问 """ from app.libs.redprint import RedPrint from app.libs.token_auth import auth from app.validators.params import IDMustBePositiveInt __author__ = 'Alimazing' api = RedPrint(name='pay', description='支付') @api.route('pre_order', methods=['POST']) @api.doc() @auth.login_required def get_pre_order(): '''获取预订单''' id = IDMustBePositiveInt().validate_for_api().id.data pass
# _*_ coding: utf-8 _*_ """ Created by Allen7D on 2018/6/17. """ from app.libs.token_auth import auth from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.models.product import Product from app.validators.params import Count, IDMustBePositiveInt from app.api_docs.v1 import product as api_doc __author__ = 'Allen7D' api = RedPrint(name='product', description='产品', api_doc=api_doc) @api.route('/all', methods=['GET']) @api.doc() def get_all_product(): '''获取所有产品的分类''' product = Product.get_all_product() return Success(product) @api.route('/recent', methods=['GET']) @api.doc() def get_recent(): '''最新的商品''' count = Count().validate_for_api().count.data products = Product.get_most_recent(count=count) return Success(products)
from app.libs.redprint import RedPrint from flask import request, jsonify, g from app.models.address import MemberAddress from app import db api = RedPrint(name='address', description='订单视图') @api.route('/add', methods=['POST']) def add(): res = {'code': 1, 'msg': '成功', 'data': {}} member = g.member if not member: res['code'] = -1 res['msg'] = '验证失败' return jsonify(res) nickame = request.form.get('nickname') mobile = request.form.get('mobile') province_id = request.form.get('province_id') province_str = request.form.get('province_str') city_id = request.form.get('city_id') city_str = request.form.get('city_str') area_id = request.form.get('area_id') area_str = request.form.get('area_str') address = request.form.get('address') if not all([nickame, mobile, province_str, city_id]): res['code'] = -1 res['msg'] = '参数不全' return jsonify(res)
from app.libs.redprint import RedPrint from app import db from flask_sqlalchemy import SQLAlchemy from flask import request,current_app,jsonify,g import requests import pymysql from config import Config from app.service.member_service import MemberService from app.models.member import OauthMemberBind,Member pymysql.install_as_MySQLdb() api = RedPrint(name='user', description='用户视图') 'http://127.0.0.1:5000/api/v1/member/login' APPID = 'wxf61a425623cb924c' APPSECRET = 'bae817c278229a7bfb0549f06ad8f350' # # @api.route('/login',methods=['GET','POST']) # def login(): # # resp = {'code':1,'msg':'成功','data':{}} # code = request.form.get('code') # nickName = request.form.get('nickName') # avatarUrl = request.form.get('avatarUrl') # gender = request.form.get('gender') #
# _*_ coding: utf-8 _*_ """ 设备类型(按照规格化分) """ from app.libs.redprint import RedPrint from app.libs.error_code import Success, ForbiddenException from app.api_docs.cms import device_category as api_doc from app.libs.token_auth import auth from app.models.device import Device as DeviceModel from app.models.device_category import DeviceCategory from app.validators.base import BaseValidator from app.validators.params import PaginateValidator api = RedPrint(name='device_category', description='设备类别(规格)管理', api_doc=api_doc, alias='cms_device_category') @api.route('/list', methods=['GET']) @api.route_meta(auth='查询设备类型列表', module='设备类型') @api.doc(args=['g.query.page', 'g.query.size'], auth=True) @auth.group_required def get_list(): '''查询设备类型列表(分页)''' validator = PaginateValidator().validate_for_api() page, size = validator.page.data, validator.size.data category_list_package = DeviceCategory.objects.filter( ).paginate_to_package(page=page, per_page=size) return Success(category_list_package)
from app.libs.redprint import RedPrint from app import db #http://127.0.0.1/api/v1/user/center api = RedPrint('user', description='用户模块') @api.route('/center') def center(): # app.logger.error('这是第一个error log') # app.logger.warning('这是第一个warning log') # app.logger.info('这是第一个info log') # app.logger.debug('这是第一个debug log') # user= User.query.get(1) # # user.name = 'xxx' # # db.session.add() # return 'center'
""" Created on 2018/6/6 22:55 """ from flask import request from app.libs.enums import ClientTypeEnum from app.libs.error_code import ClientTypeError, Success from app.libs.redprint import RedPrint from app.models.user import User from app.validators.forms import ClientForm, UserEmailForm __Author__ = '阿强' api = RedPrint('client') @api.route('/register', methods=['POST']) def create_client(): form = ClientForm().validate_for_api() promise = {ClientTypeEnum.USER_EMAIL: __register_user_by_email} promise[form.type.data]() return Success() def __register_user_by_email(): form = UserEmailForm().validate_for_api() User.register_by_email(form.nickname.data, form.account.data, form.secret.data)
Created on 2018/8/9 23:12 """ from flask import jsonify, g from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.libs.token_auth import token_decorator from app.models.classic import Classic from app.models.tap import Tap from app.validators.forms import LikeForm __Author__ = '阿强' api = RedPrint('like') @api.route('', methods=['POST']) @token_decorator def like(): uid = g.user.uid form = LikeForm().validate_for_api() cid = form.data["art_id"] type = form.data["type"] Tap.tap_like(uid, cid, type) if type != 400: Classic.give_like(cid) return Success()
from flask import jsonify from app.libs.redprint import RedPrint from app.models.product import Product from app.validators.params import Count, IDMustBePositiveInt, ProductIdValidator api = RedPrint('product') @api.route('/recent', methods=['GET', 'POST']) def get_recent(): form = Count().validate_for_api() products = Product.get_most_recent(form.count.data, form.page.data) return jsonify(products) @api.route('/by_category', methods=['GET', 'POST']) def get_all_in_category(): form = IDMustBePositiveInt().validate_for_api() products = Product.get_product_by_category_id(form.id.data, form.count.data, form.page.data) return jsonify(products) @api.route('/<int:id>', methods=['GET', 'POST']) def get_one(id): product = Product.get_product_detail(id=id) return jsonify(product) @api.route('/order_product', methods=['POST'])
import requests from flask import request, current_app, jsonify from app.libs.redprint import RedPrint api = RedPrint(name='foods', description='商品模型') # 传入两个参数,一个是路由,一个是对红图的描述 @api.route('/banners', methods=['GET']) def banners(): ctx = {'code': 1, 'msg': 'OK', 'data': {}} banners = [{ 'id': 1, 'pic_url': 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1589999926675&di=1f3cc52857073639ff25cb92b4a2767e&imgtype=0&src=http%3A%2F%2Fpic1.16pic.com%2F00%2F53%2F45%2F16pic_5345901_b.jpg' }, { 'id': 2, 'pic_url': 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1589999926675&di=1f3cc52857073639ff25cb92b4a2767e&imgtype=0&src=http%3A%2F%2Fpic1.16pic.com%2F00%2F53%2F45%2F16pic_5345901_b.jpg' }, { 'id': 3, 'pic_url': 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1589999926675&di=1f3cc52857073639ff25cb92b4a2767e&imgtype=0&src=http%3A%2F%2Fpic1.16pic.com%2F00%2F53%2F45%2F16pic_5345901_b.jpg' }] ctx['data']['banners'] = banners return jsonify(ctx)
# _*_ coding: utf-8 _*_ """ Created by Alimazing on 2018/6/16. """ from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.models.banner import Banner from app.validators.params import IDMustBePositiveInt __author__ = 'Alimazing' api = RedPrint('banner') @api.route('/<id>', methods=['GET']) def get_banner(id): id = IDMustBePositiveInt().validate_for_api().id.data banner = Banner.get_banner_by_id(id=id) # banner.hide('description') # 临时隐藏 return Success(banner)
from flask import render_template from flask_login import login_required from app.libs.redprint import RedPrint from app.libs.cahce import cache from app.models import Article from app.view_models import ArticleViewModel views = RedPrint('article') @views.route('', methods=['GET']) @cache.cached(timeout=60 * 60 * 24 * 7, key_prefix='article') def article(): return render_template('article.html') @views.route('/detail/<int:article_id>', methods=['GET']) @cache.cached(timeout=60 * 10) def article_detail(article_id): article = Article.query.filter_by(id=article_id).first_or_404() article.increase_page_views() article_view_model = ArticleViewModel(dict(article), 101) return render_template('article_detail.html', article=article_view_model) @views.route('/writer', methods=['GET']) @login_required @cache.cached(timeout=60 * 60 * 24 * 7, key_prefix='article_editor') def article_editor(): return render_template('article_editor.html')
from flask import request from app.models.device import Device from app.models.project import Project from app.models.monitor import Monitor from app.models.line import Line from app.models.alarm import Alarm from app.models.load_type import LoadType from app.libs.error_code import Success, NotFound, DeviceException from app.libs.utils import zero_time from app.service import socketservice from app.service.device import Device as Deviceservice from app.libs.utils import jsonify, multiple_run, month_datetime import decimal api = RedPrint(name='device', description='设备', api_doc=api_doc) @api.route('/all') def device_all_list(): """ 所有设备的项目列表 :return: """ device = Device.objects.filter(company_name="金峰测试").get_or_404() return Success(list(device)) @api.route('/unused/list') def unused_device_list(): """
Created by Alimazing on 2018/6/25. """ from flask import g from app.libs.error_code import UserException from app.libs.success_code import RenewSuccess, Success from app.libs.redprint import RedPrint from app.libs.token_auth import auth from app.models.base import db from app.models.user import User from app.models.user_address import UserAddress from app.validators.forms import AddressNew __author__ = 'Alimazing' api = RedPrint(name='address', description='用户地址') @api.route('', methods=['GET']) @auth.login_required @api.doc() def get_address(): '''获取「用户自身的地址」''' uid = g.user.uid with db.auto_check_empty(UserException(error_code=6001, msg='用户地址不存在')): user_address = UserAddress.query.filter_by(user_id=uid).first_or_404() return Success(user_address) @api.route('', methods=['POST']) @auth.login_required
# _*_ coding: utf-8 _*_ """ Created by Alimazing on 2018/6/16. """ from app.libs.success_code import Success from app.libs.redprint import RedPrint from app.models.banner import Banner from app.validators.params import IDMustBePositiveInt __author__ = 'Alimazing' api = RedPrint(name='banner', description='横幅信息') @api.route('/<int:id>', methods=['GET']) @api.doc() def get_banner(id): '''获取「首页轮播图」''' id = IDMustBePositiveInt().validate_for_api().id.data banner = Banner.get_banner_by_id(id=id) # banner.hide('description') # 临时隐藏 return Success(banner)
from flask import jsonify, g from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.libs.token_auth import auth from app.models.comment import Comment from app.validators.params import Count, CreateCommentValidator api = RedPrint('comment') @api.route('/<int:pid>', methods=['GET', 'POST']) def get_comment(pid): form = Count().validate_for_api() comments = Comment.get_comment_by_pid(pid, form.count.data, form.page.data) return jsonify(comments) @api.route('/create', methods=['GET', 'POST']) @auth.login_required def create_comment(): uid = g.user.uid form = CreateCommentValidator().validate_for_api() Comment.create_by_comment(uid, form.order_id.data, form.comment.data) return Success(msg='评论成功')
from app.libs.redprint import RedPrint from flask import request, jsonify from app.utils.common import buildPicUrl from app.models.food import Category, Food api = RedPrint('food', description='食品模块') """ """ @api.route('/search') def search(): res = {'code': 1, 'msg': '成功', 'data': {}} categories = [] categorys = Category.query.filter(Category.status == 1).order_by( Category.weight.desc()).all() categories.append({"id": 0, "name": "全部"}) for category in categorys: temp_data = {} temp_data['id'] = category.id temp_data['name'] = category.name categories.append(temp_data) res['data']['categories'] = categories foods = [] all_foods = Food.query.filter(Food.status == 1).order_by( Food.month_count.desc()).limit(3).all() for food in all_foods: temp_data = {} temp_data['id'] = food.id
Created by Allen7D on 2018/5/31. ↓↓↓ 普通用户接口 ↓↓↓ """ from flask import g from app.libs.error_code import Success from app.libs.redprint import RedPrint from app.libs.token_auth import auth from app.models.base import db from app.models.user import User from app.api_docs.v1 import user as api_doc __author__ = 'Allen7D' # 直接将api文档的内容放入RedPrint中 api = RedPrint(name='user', description='用户', api_doc=api_doc) @api.route('', methods=['GET']) @api.doc() @auth.login_required def get_user(): '''用户获取自身信息''' # g变量是「线程隔离」的,是全局变量(方便在各处调用);「g.user」是当前用户 user = User.query.get_or_404(ident=g.user.uid) return Success(user) @api.route('', methods=['PUT']) @api.doc() @auth.login_required def update_user():
# -*-coding:utf-8-*- # author: xdz # @Time :2020/7/13 10:48 from flask import Blueprint from app.libs.redprint import RedPrint api = RedPrint('book') @api.route('/get') def get_book(): return 'book get' @api.route('/create') def create_book(): return 'create book'
# _*_ coding: utf-8 _*_ """ Created by Alimazing on 2018/6/17. """ __author__ = 'Alimazing' from app.libs.success_code import Success from app.libs.redprint import RedPrint from app.models.product import Product from app.validators.params import Count, IDMustBePositiveInt __author__ = 'Alimazing' api = RedPrint(name='product', description='产品') @api.route('/recent', methods=['GET']) def get_recent(): count = Count().validate_for_api().count.data products = Product.get_most_recent(count=count) return Success(products) @api.route('/by_category', methods=['GET']) def get_all_in_category(): id = IDMustBePositiveInt().validate_for_api().id.data products = Product.get_product_by_category_id(id=id) return Success(products) @api.route('/<int:id>', methods=['GET'])
from app.libs.redprint import RedPrint from app import db from flask import jsonify, request, g import json from app.models.cart import MemberCart from app.models.food import Food from app.utils.common import buildPicUrl from app.models.address import MemberAddress from app.models.order import PayOrder, PayOrderItem import hashlib import time,random api = RedPrint('order', description='订单模块') @api.route('/index', methods=['POST']) def center(): res = {'code': 1, 'msg': '成功', 'data': {}} ids = request.form.get('ids') # 商品的ids ids = json.loads(ids) # 转成列表 member = g.member if not member: res['code'] = -1 res['msg'] = '用户不存在' return jsonify(res) yun_price = 0
# @File : file_uploads.py # @Contact : # @Software : PyCharm # @Desc : from flask import request from flask_jwt_extended import jwt_required, get_jwt_identity from flask_uploads import IMAGES from app.domain.UploadSet import UploadSet from app.enums.ResultEnum import ResultEnum from app.helper.HttpHelper import HttpHelper from app.libs.handler.APIException import APIException from app.libs.redprint import RedPrint from app.models.SysFile import SysFile api = RedPrint('file_uploads') avatar = UploadSet('avatar', extensions=IMAGES) @api.route('', methods=['POST']) @jwt_required def upload(): if 'avatar' not in request.files: raise APIException(ResultEnum.FILE_UPLOAD_METHOD_ERROR) file = request.files['avatar'] org_name = file.filename # 调用Flask-uploads进行存储 # 1、目标路径不存在自动创建 # 2、重名自动加自增的数字后缀
# -*- coding:utf-8 -*- from flask import current_app, jsonify from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from app.libs.enums import ClientTypeEnum from app.libs.redprint import RedPrint from app.models.user import User from app.validators.forms import ClientForm api = RedPrint('token') @api.route('', methods=['POST']) def get_token(): form = ClientForm().validate_for_api() promise = {ClientTypeEnum.USER_EMAIL: User.verify} identity = promise[ClientTypeEnum(form.type.data)](form.account.data, form.secret.data) expiration = current_app.config['TOKEN_EXPIRATION'] token = generate_auth_token(identity['uid'], form.type.data, identity['scope'], expiration) t = {'token': token.decode('ascii')} return jsonify(t), 201 def generate_auth_token(uid, ac_type, scope=None, expiration=7200): """ 生成令牌
from flask_login import login_required from app.libs.redprint import RedPrint from app.validators import ManagerValidator from app.models import Manager, db from app.libs.api_exceptions import Success api = RedPrint('manager') @api.route('/authorization', methods=['POST']) def authorization(): """ API描述 Url: POST /v1/manager/authorization 描述:根据名称创建一个模块 :param {'email': '', 'password': '', 'nickname': '', authorization_code: ''} :return {'code': '', msg: ''} """ validator = ManagerValidator().validate_for_api() with db.auto_commit(): manager = Manager.register(**validator.data) db.session.add(manager) return Success(201)
from flask import render_template, request, flash, current_app, redirect, url_for from app import db from app.libs.login import admin_login_required, admin_auth from app.libs.redprint import RedPrint from app.models.oplog import Oplog from app.models.tag import Tag from app.validators.tag import TagForm app = RedPrint() @app.route('/tag/add', methods=['GET', 'POST']) @admin_login_required @admin_auth def tag_add(): form = TagForm(request.form) if request.method == 'POST' and form.validate(): with db.auto_commit(): tag = Tag() tag.name = form.name.data db.session.add(tag) Oplog('添加标签:' + tag.name) flash('添加标签成功~', 'ok') return redirect(url_for('admin.tag_add')) return render_template('admin/tag_add.html', form=form) @app.route('/tag/list/<int:page>') @admin_login_required @admin_auth
from app.libs.redprint import RedPrint api = RedPrint(name='order', description='订单视图') @api.route('/') def index(): return 'index'