Example #1
0
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)
Example #3
0
	微信会分别给小程序和 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()
Example #4
0
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)
Example #5
0
# _*_ 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
Example #6
0
# _*_ 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)

Example #7
0
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)
Example #8
0
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)
Example #10
0
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'
Example #11
0
"""
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)
Example #12
0
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()

Example #13
0
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'])
Example #14
0
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)
Example #15
0
# _*_ 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)
Example #16
0
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')
Example #17
0
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():
    """
Example #18
0
  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
Example #19
0
# _*_ 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)
Example #20
0
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='评论成功')
Example #21
0
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
Example #22
0
  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():
Example #23
0
# -*-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'
Example #24
0
# _*_ 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'])
Example #25
0
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、重名自动加自增的数字后缀
Example #27
0
# -*- 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):
    """
    生成令牌
Example #28
0
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)

Example #29
0
File: tag.py Project: azbhg1/temp
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
Example #30
0
from app.libs.redprint import RedPrint

api = RedPrint(name='order', description='订单视图')


@api.route('/')
def index():
    return 'index'