コード例 #1
0
from app.libs.redprint import Redprint
from flask import request, g, current_app
from app.libs.auth import auth
from app.models.auth import User, Role, Permission
from app.libs.error_types import AuthFailedException
from app.libs.success_types import Success


login = Redprint('login')


@login.route('/token', methods=['POST'])
def get_token():
    data = request.get_json(silent=True)
    username = data.get('username')
    password = data.get('password')
    user = User.get_item_by_name(name=username)
    if not user or not user.verify_password(password):
        return AuthFailedException(msg='user or secret error')
    return Success(msg={
        'token': user.generate_api_auth_token(current_app.config['TOKEN_EXPIRATION'])
    })


@login.route('/user_info', methods=['GET'])
@auth.login_required
def get_user_info():
    data = {
        'uid': g.current_user.uid,
        'name': g.current_user.name,
        'roles': [],
コード例 #2
0
# user = Blueprint('user',__name__)

# @user.route('/v1/user/get')
# def get_user():
#     return 'imwl'

from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.models.user import User
from app.models.base import db
from flask import jsonify ,g

from app.libs.erro_code import DeleteSuccess, AuthFailed

api = Redprint('user')

# class Wei():
#     name = 'weilai'
#     age = 'age'

#     def __init__(self):
#         self.gender = 'male'

#     def keys(self):   
#         return ('name','age','gender')  #  取到 key ,  做到自定义key 
#         # # return ('name',)  # 一个元素的元组
#         # return ['name']  # return 序列类型的都可以

#     def __getitem__(self,item):  
#         return getattr(self,item)   # 取到 key对应的value
コード例 #3
0
from flask import request, flash

from app.libs.enums import ClientTypeEnum
from app.libs.redprint import Redprint
from app.models.user import User
from app.validators.forms import ClientForm, UserEmailForm

from sep_flask.app.models.base import db

api = Redprint('client')


# 这个视图函数就没有对数据库进行操作! 装逼装的都不认识了!没有必要!
@api.route('/register', methods=['POST'])
def create_client():
    data = request.get_json()  # 在这里接收参数
    form = ClientForm(data=data)  # 在这里校验参数(类似爬虫里面的解析) 在WTForms源码中
    if form.validate():  # 执行校验
        #如果通过校验了就可以进行注册了 羡慕就是注册方法,用字典触发字典的值,也就是那个注册函数
        promise = {ClientTypeEnum.USER_EMAIL: __register_user_by_email}
        promise[form.type.data]()
        # u = User(email=form.email.data,
        #          _password=form.secret.data,
        #          nickname=form.email.data)
        # # 将用户对象保存到数据库
        # db.session.add(u)
        # # 下面生成token需要用户id,此时还没有id,需要手动提交
        # db.session.commit()

        # 提示用户下一步操作
        # flash('注册成功')
コード例 #4
0
ファイル: tag.py プロジェクト: qw1004901361/pilipili
from app.libs.enums import ReturnEnum
from app.libs.redprint import Redprint
from app.libs.utils import write_oplog
from app.models.base import db
from app.models.video import Tag
from app.view_models.return_obj import ReturnObj

"""
视频标签模块(视频管理员,超级管理员)
添加标签
编辑标签
列出标签
删除标签
"""

tag = Redprint("tag")


@tag.route("/add", methods=["POST"])
@login_required
@user_auth
@swag_from("../../yml/admin/tag/add_tag.yml")
def add_tag():
    form = TagAddForm().validate_for_api()
    with db.auto_commit():
        tag = Tag()
        if form.parent_id.data:
            tag.parent_id = form.parent_id.data
        tag.name = form.name.data
        tag.info = form.info.data
        db.session.add(tag)
コード例 #5
0
from app.libs.redprint import Redprint
from app.libs.utils import make_dir, change_filename, allowed_image_file, allowed_video_file, write_oplog
from app.models.base import db
from app.models.video import Video, Tag, Bangumi, Episode
from app.view_models.return_obj import ReturnObj
"""
番剧模块(视频管理员,超级管理员)
添加番剧
列出番剧
编辑番剧
删除番剧
查询番剧
添加番剧视频
"""

bangumi = Redprint("bangumi")


@bangumi.route("/add", methods=["POST"])
@login_required
@user_auth
@swag_from("../../yml/admin/bangumi/add_bangumi.yml")
def add_bangumi():
    form = BangumiAddForm().validate_for_api()
    with db.auto_commit():
        bangumi = Bangumi()
        bangumi.name = form.name.data
        bangumi.info = form.info.data
        if form.voice_actors.data:
            bangumi.voice_actors = form.voice_actors.data
        if form.staff.data:
コード例 #6
0
ファイル: book.py プロジェクト: Xuchaoqiang/ginger
# -*- coding:utf-8 -*-
# @Author :xuchaoqiang

# redprint
from flask import jsonify
from sqlalchemy import or_

from app.forms.book import BookSearchForm
from app.libs.redprint import Redprint
from app.models.book import Book

api = Redprint("book")


@api.route('')
def search():
    form = BookSearchForm().validate_for_api()
    # sqlachemy模糊匹配
    q = '%' + form.q.data + '%'
    books = Book.query.filter(or_(Book.title.like(q),
                                  Book.publisher.like(q))).all()
    books = [book.hide('summary') for book in books]
    return jsonify(books)
コード例 #7
0
from app.forms.auth import PwdForm
from app.forms.other import PageForm, IdForm
from app.forms.user import UserEditForm, FanOrFollowForm, CancelColForm
from app.forms.videoform import UploadForm
from app.libs.auth import unload_auth
from app.libs.enums import GenderEnum, ReturnEnum
from app.libs.redprint import Redprint
from app.libs.utils import change_filename, num_assign, allowed_image_file, allowed_video_file
from app.models.base import db
from app.models.log import ViewLog, LoginLog
from app.models.user import BaseUser, User, Follow
from app.models.video import BangumiCol, Tag, VideoCol, Bangumi, Video, Comment, UploadVideo, Verification
from app.view_models.return_obj import ReturnObj

personal = Redprint("personal")


@personal.route("/get_user")
@login_required
def get_user():
    """查看用户信息"""
    baseuser = BaseUser.query.filter(BaseUser.id == current_user.id). \
        first_or_404(description="找不到该用户")
    user = User.query.filter(User.id == baseuser.id).first()
    r = {
        "user": {
            "id": baseuser.id,
            "name": baseuser.name,
            "account": baseuser.account,
            "gender": GenderEnum(baseuser.gender).name,
コード例 #8
0
ファイル: user.py プロジェクト: to2bage/ginger
"""
  *@ClassName user
  *@Description TODO 关于User的视图函数  127.0.0.1:5000/v1/user/get
  *@Author to2bage
  *@Date 2020-07-26 10:20
  *@Version 1.0
 """

from app.libs.redprint import Redprint

api = Redprint("user")


@api.route("/get")
def get_user():
    return " i am totobage"
コード例 #9
0
ファイル: auth.py プロジェクト: y19941115mx/fisher
from flask_login import login_user, logout_user

from app.libs.redprint import Redprint
from flask import render_template, request, flash, redirect, url_for
from app.forms.auth import LoginForm, RegisterForm, EmailForm, ResetPasswordForm
from app.libs.token_auth import translate_token
from app.libs.util import send_email
from app.models import db
from app.models.user import User

redprint = Redprint('auth')


@redprint.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm(request.form)
    if request.method == 'POST' and form.validate():
        user = User.query.filter_by(email=form.email.data).first_or_404()
        if user.is_active and user.check_password(form.password.data):
            login_user(user, remember=True)
            # 处理重定向
            next = request.args.get('next')
            if next and str(next).startswith('/'):
                return redirect(next)
            else:
                return redirect(url_for('web.index'))
        else:
            flash('账号未激活或密码错误')

    return render_template('auth/login.html', form=form)
コード例 #10
0
ファイル: cart.py プロジェクト: danny0828/MyRestaurant
"""
 Created by Danny on 2018/12/11
"""
from app.libs.redprint import Redprint
from app.libs.error_code import Success, NotFound, ParameterException, AuthFailed
from app.validators.forms import CartForm
from flask import g, jsonify, request
from app.models.food.food import Food
from app.models.member.member_cart import MemberCart
from app.libs.token_auth import auth
from app.libs.helper import select_filter_obj, get_dict_filter_field
from app.libs.url_manager import UrlManager
import json
__author__ = 'Danny'

api = Redprint('cart')


@api.route("/index")
@auth.login_required
def cart_index():
    member_info = g.user
    if not member_info:
        return AuthFailed('请先登录')
    cart_list = MemberCart.query.filter_by(member_id=member_info.uid).all()
    data_cart_list = []
    resp = {}
    if cart_list:
        food_ids = select_filter_obj(cart_list, "food_id")
        food_map = get_dict_filter_field(Food, Food.id, "id", food_ids)
        for item in cart_list:
コード例 #11
0
ファイル: migrate.py プロジェクト: WXYwxy12390/-
import os
import shutil

from flask import jsonify, current_app

from app.libs.redprint import Redprint
from app.models import db, json2db
from app.models.base_line import Patient, PastHis, DrugHistory, IniDiaPro
from app.models.crf_info import FollInfo
from app.models.cycle import Immunohis, MoleDetec
from app.models.lab_inspectation import BloodRoutine, BloodBio, Thyroid, Coagulation, MyocardialEnzyme, Cytokines, \
    LymSubsets, UrineRoutine, TumorMarker
from app.models.other_inspect import Lung, OtherExams, ImageExams
from app.models.therapy_record import Surgery, Radiotherapy, OneToFive

api = Redprint('migrate')


# 迁移update_time
@api.route('/update_time', methods=['GET'])
def migrate_update_time():
    patients = Patient.query.filter_by().all()
    with db.auto_commit():
        for patient in patients:
            patient.update_time = patient.updateTime
    return 'ok'


@api.route('/hormone_drug', methods=['GET'])
def migrate_hormone_drug():
    hormone_items = PastHis.query.filter(PastHis.is_delete == 0,
コード例 #12
0
ファイル: animation.py プロジェクト: qw1004901361/pilipili
from app.libs.auth import user_auth
from app.libs.enums import ReturnEnum
from app.libs.redprint import Redprint
from app.libs.utils import logging, change_filename, allowed_image_file, write_oplog
from app.models.base import db
from app.models.video import Animation, Tag
from app.view_models.return_obj import ReturnObj
"""
轮播图模块(视频管理员,超级管理员)
添加轮播图
列出轮播图
删除轮播图
编辑轮播图
"""

animation = Redprint("animation")


@animation.route("/add", methods=["POST"])
@login_required
@user_auth
@swag_from("../../yml/admin/animation/add_animation.yml", methods=['POST'])
def add_animation():
    """添加轮播图"""
    form = AnimationAddForm().validate_for_api()
    with db.auto_commit():
        animation = Animation()
        animation.name = form.name.data
        try:
            file = request.files[form.logo.name]
            if not allowed_image_file(file.filename):
コード例 #13
0
ファイル: task_admin.py プロジェクト: yinz816/robosat_geoc
# import json
from flask import jsonify, request
import json
import collections
from rasterio.warp import transform_bounds
from mercantile import tiles, xy_bounds

from robosat_pink.geojson import geojson_parse_feature
from app.models.base import queryBySQL, db as DB
from app.libs.redprint import Redprint
from app.config import setting as SETTING
from app.models.task_admin import task_admin as TASK_ADMIN

api = Redprint('task_admin')


@api.route('', methods=['GET'])
def create_task_by_areacode():
    result = {"code": 1, "data": None, "msg": "create bat task success!"}
    areacode = request.args.get('areacode')
    zoom = request.args.get('zoom') or '14'  # 将区域范围分割成zoom级别瓦片大小的任务
    zoom = eval(zoom)

    if not areacode:
        result['code'] = 0
        result['msg'] = "no areacode params"
        return jsonify(result)
    quhuaTable = ''
    if len(areacode) == 9:  #FIXME:bug when null areacode
        quhuaTable = SETTING.QUHUA_XIANG
    elif len(areacode) == 6:
コード例 #14
0
ファイル: patient.py プロジェクト: WXYwxy12390/-
from flask import request, g

from app.libs.decorator import edit_need_auth
from app.libs.error import Success
from app.libs.error_code import ParameterException
from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.models import json2db
from app.models.base_line import Patient
from app.spider.user_info import UserInfo

api = Redprint('patient')

@api.route('/<int:id>',methods = ['GET'])
def get_patient(id):
    patient = Patient.query.filter_by(id=id).first()
    return Success(data=patient if patient else {})


@api.route('/<int:pid>',methods = ['POST'])
@auth.login_required
@edit_need_auth
def add_patient(pid):
    data = request.get_json()
    patient = Patient.query.get_or_404(pid)
    if 'idNumber' in data:
        item = Patient.query.filter(Patient.is_delete == 0, Patient.idNumber == data['idNumber'],
                                       Patient.id != pid, Patient.researchCenter == patient.researchCenter).first()
        if item:
            raise ParameterException(msg='已经存在相同身份证号码。')
    if 'hospitalNumber' in data and patient.hospitalNumber is not None:
コード例 #15
0
ファイル: gift.py プロジェクト: tanglang1990/ginger
from flask import g

from app.libs.error_code import Success, DuplicateGift
from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.models.base import db
from app.models.book import Book
from app.models.gift import Gift

api = Redprint('gift')


@api.route('/<isbn>', methods=['POST'])
@auth.login_required
def create(isbn):
    uid = g.user.uid
    with db.auto_commit():
        Book.query.filter_by(isbn=isbn).first_or_404()
        gift = Gift.query.filter_by(isbn=isbn, uid=uid, launched=False).first()
        if gift:
            raise DuplicateGift()
        gift = Gift()
        gift.isbn = isbn
        gift.uid = uid
        db.session.add(gift)
    return Success()
コード例 #16
0
ファイル: login.py プロジェクト: YJinHai/FlaskAPI
import datetime

from flask import request, g
from flask_jwt_extended import create_access_token
from flask_restful import Resource

from app.models.user import User
from app.libs.redprint import Redprint

api = Redprint('login')


class LoginAPI(Resource):

    def post(self):
        if not request.is_json:
            return {"msg": "Missing JSON in request"}, 400

        username = request.json.get('username', None)
        password = request.json.get('password', None)
        if not username:
            return {"msg": "Missing username parameter"}, 400
        if not password:
            return {"msg": "Missing password parameter"}, 400

        user = User.objects(name=username).first()

        if user is None:
            return {"msg": "Bad username"}, 401
        if not user.verify_password(password):
            return {"msg": "Bad password"}, 401
コード例 #17
0
ファイル: picture.py プロジェクト: KennethLuff/py_kenneth
com_ = """
  Created by Kenneth Luff
  Email: [email protected]
"""
from app.libs.redprint import Redprint
from flask import render_template

admin = Redprint('picture')


#图片列表
@admin.route('/picture_list')
def picture_list():
    return render_template('admin/picture-list.html')


#图片展示
@admin.route('/picture_show')
def pictrue_show():
    return render_template('admin/picture-show.html')


#添加图片
@admin.route('/picture_add')
def pictrue_add():
    return render_template('admin/picture-add.html')


コード例 #18
0
'''
爬虫处理器
'''
import json, time

from app.models.spider_handlers import Spider
from flask import render_template, flash, request, jsonify, url_for, redirect
from app.libs.redprint import Redprint

__author__ = "带土"

api = Redprint('startSpider')


@api.route("", methods=["POST"])
def startSpider():
    _spider = Spider()
    count = _spider.spiderMain()
    obj = {
        "resultCode": "20000",
        "message": f"网络爬虫收获{count}条数据。",
        "result": count
    }
    return jsonify(obj)
コード例 #19
0
ファイル: learn.py プロジェクト: qingxiaoye/yjcloud-learn
from app.libs.token_auth import auth
from app.validators.forms_v1 import StatQiSituationForm, StatQiScoreForm, StatQiScoreBranchForm, \
    StatQiScoreAgentForm, StatQiRuleForm, StatOpDurationForm, StatOpSilenceForm, StatOpRepeatForm, StatOpReasonForm, \
    StatOpHotForm, StatOpBusinessForm
from app.libs.redprint import Redprint
from app.libs.error_code import ResultSuccess, PageResultSuccess
from app.libs.qpaginate import pager

from app.models.base import db_v1
from app.models.qi_qia_models import QiScoreCall, QiInfoTraffic, QiInfoMapRule, QiResultsDetail, QiInfoUser, \
    QiInfoBranch, QiResultsBusinessAnalysis, QiInfoCallReasonType, QiResultsRepeatCall, QiInfoBusinessType, \
    QiResultsBusinessTrend, QiResultsHotword, QiCallDuration, QiInfoRole
from app.validators.base import PageForm

api = Redprint('learn')
logger = logging.getLogger(__name__)


def _branch_sub_rel_reformer(branch_id_pairs, max_deep=10):
    branch_sub_rel = defaultdict(set)
    for b_id, b_supid in branch_id_pairs:
        branch_sub_rel[b_supid].add(b_id)
    branch_all_sub_rel = defaultdict(set)
    for k, sub_ids in branch_sub_rel.items():
        all_sub_ids = set()
        id_stack = deque([
            k,
        ])
        deep_counter = 0
        deep_limit = max_deep - 1
コード例 #20
0
ファイル: land.py プロジェクト: wswjuea/ginger
from flask import send_from_directory
from sqlalchemy import and_, or_
import os, difflib

from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.config.setting import LAND_VIEW_TYPE, LAND_USAGE_TYPE, LAND_REGION, LAND_BLOCK_STATUS, LAND_FILE_TYPE

from app.view_models.redict import SuccessViewModel, isempty, land_order_ad
from app.models.land import Land
from app.view_models.land import LandViewModel
from app.validators.forms import LandFilterForm, LandFilterFormId, LandFileDn, LandSearchForm
from app.view_models.redict import DataLayer, MultiSelect, PageChoose, DateIsEmpty

api = Redprint('land')


@api.route('/all')
@auth.login_required
def all():
    lands = Land.query.all()
    lands = [LandViewModel.landviewmodel(land) for land in lands]
    # 显示状态码
    for land in lands:
        land["display_code"] = 0
    lands[0]["display_code"] = 1

    return SuccessViewModel.redict(lands)


# POST筛选
コード例 #21
0
from flask import request

from app.libs.enums import ClientTypeEnum
from app.libs.redprint import Redprint
from app.models.user import User
from app.validators.forms import ClientForm, UserEmailForm

api = Redprint("client")


@api.route("/register", methods=["POST"])
def create_client():
    data = request.json
    form = ClientForm(data=data)
    if form.validate():
        promise = {
            ClientTypeEnum.USER_EMAIL: __register_user_by_email,
        }
        promise[form.type.data]()
    # 注册 登录
    # 参数 校验 接收参数
    # WTForms
    pass


def __register_user_by_email():
    form = UserEmailForm(data=request.json)
    form.validate()
    User.register_by_email(form.nickname.data, form.account.data,
                           form.secret.data)
    pass
コード例 #22
0
# -*- coding: utf-8 -*-
# @Time    : 2020/5/20 上午12:53
# @Author  : iGolden
# @Software: PyCharm
from flask import jsonify

from app.libs.error_code import Success
from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.models.comments import Comments
from app.validators.forms import CommentsForm, PostIdForm

api = Redprint('comments')


@api.route('/save', methods=['POST'])
@auth.login_required
def save_posts():
    form = CommentsForm().validate_for_api()
    Comments.save_comments(form.post_id.data, form.content.data)
    return Success(msg='评论创建成功!')


@api.route('/posts', methods=['POST'])
@auth.login_required
def posts_comments():
    form = PostIdForm().validate_for_api()
    list = Comments.posts_comments(form.post_id.data)
    return jsonify(list)

コード例 #23
0
ファイル: book.py プロジェクト: JX-T/ginger
# -*- coding: utf-8 -*-
# __author__ = 'Miracle'
from app.libs.redprint import Redprint

api = Redprint('book', url_prefix='/book')


@api.route('/search/')
def search():
    return 'book'


コード例 #24
0
ファイル: wmts.py プロジェクト: yinz816/robosat_geoc
import requests
from flask import request, Response
from app.libs.redprint import Redprint
from app.config import setting as SETTING
api = Redprint('wmts')


@api.route('/<z>/<x>/<y>', methods=['GET'])
def wmts(x, y, z):
    map = request.args.get("type")
    if not x or not y or not z:
        return None
    if not map and map != "tdt" and map != "google":
        return "faild to set map type, neither tianditu nor google"
    url = SETTING.URL_TDT
    url_google = SETTING.URL_GOOGLE
    if map == 'google':
        url = url_google
    image = requests.get(url.format(x=x, y=y, z=z))

    print(url.format(x=x, y=y, z=z))
    return Response(image, mimetype='image/jpeg')
コード例 #25
0
from flask import current_app, jsonify

from app.libs.enums import ClientTypeEnum
from app.libs.error_code import AuthFailed
from app.libs.redprint import Redprint
from app.models.user import User
from app.validators.forms import ClientForm, TokenForm
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired, \
    BadSignature

api = Redprint('token')


@api.route('', methods=['POST'])  # post is more d
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)
    # Token
    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

コード例 #26
0
from flask import jsonify, request
from app.libs.redprint import Redprint
from app.models.base import db
from app.models.grade import Grade
from app.models.group_team import Group_team
from app.models.league import League
from app.models.schedule import Schedule
from app.models.school import School
from app.libs.error_code import Success
from app.models.turns import Turns

api = Redprint('turns')


@api.route('/create', methods=['POST'])
def create_turns():
    jsonData = request.get_json()
    with db.auto_commit():
        turns = Turns()
        turns.league_id = jsonData['league_id']
        turns.turns_name = jsonData['turns_name']
        db.session.add(turns)
    return Success(msg='新增轮次成功')


@api.route('/get')
def get_turns():
    # 通过赛事league_id查询出league_type赛事类型(联赛或者杯赛),根据league_id设置schedule_process返回到前端,
    # 在前端传新增赛程数据的时候传到后端,来区别这场比赛是联赛的比赛,还是杯赛的淘汰赛,还是小组赛
    league_id = request.args.get('league_id')
    league = db.session.query(League).filter(League.league_id == league_id)
コード例 #27
0
from flask import Blueprint, jsonify
from sqlalchemy import or_

from app.libs.redprint import Redprint
from app.models.book import Book
from app.validators.forms import BookSearchForm

api = Redprint('book')


@api.route('', methods=['GET'])
def get_book():
    return 'get book'


@api.route('', methods=['POST'])
def create_book():
    return 'create book'


@api.route('/search')
def search():
    form = BookSearchForm().validate_for_api()
    q = '%' + form.q.data + '%'
    books = Book.query.filter(or_(Book.title.like(q),
                                  Book.publisher.like(q))).all()
    books = [book.hide('summary') for book in books]
    return jsonify(books)


@api.route('/<isbn>/detail')
コード例 #28
0
ファイル: department.py プロジェクト: shenxi0723/cpm
from flask import jsonify
from app.libs.redprint import Redprint

from app.libs.toke_auth import auth
from app.models.department import Department
from app.view_models.department import DepartmentCollection
from app.validators.department import DepartmentForm, DepartmentEditForm, DepartmentDeleteForm
from app.libs.error_code import Success

api = Redprint('department')


@api.route('/<int:id>', methods=['GET'])
@auth.login_required
def get_department(id):
    department = Department.query.get_or_404(id)
    return jsonify(department)


@api.route('', methods=['GET'])
@auth.login_required
def get_department_schema():
    department = Department.query.all()

    # 使用ViewModel
    department_view = DepartmentCollection()
    department_view.get_department(department)
    return jsonify(department_view)


@api.route('', methods=['POST'])
コード例 #29
0
import base64
import random
from uuid import uuid4
from io import BytesIO

from flask import jsonify

from app.libs.error_code import Forbidden, Success, ParameterException
from app.libs.mail import send_verification_mail
from app.libs.redprint import Redprint
from app.libs.token_auth import auth
from app.validators.forms import MailForm, CodeForm
from captcha.image import ImageCaptcha
from app import redis as rd

api = Redprint('captcha')


@api.route('/image', methods=['GET'])
def get_image_captcha_api():
    uuid = 'I-' + _generate_uuid()
    code = _generate_code()
    rd.hmset(uuid, {
        'code': code,
        'success': 0,
    })
    rd.expire(uuid, 300)
    img = ImageCaptcha()
    image = img.generate_image(code)
    base64_str = _image_to_base64(image)
    return jsonify({'code': 0, 'data': {'image': base64_str, 'uuid': uuid}})
コード例 #30
0
from flask import current_app, jsonify, g, request
from app.libs.redprint import Redprint
from app.models.opLog import OperateLog
from app.libs.token_auth import login_required
from app.libs.status_code import ParameterException
from datetime import datetime
from sqlalchemy import and_

api = Redprint('operate-log')


@api.route('/get-my-operate-log')
@login_required(['admin', 'hr'])
def get_operate_log():
    page = request.args.get('page')
    page_size = request.args.get('pageSize')
    operate_type = request.args.get('type')
    start_time = request.args.get('startTime')
    end_time = request.args.get('endTime')
    if not page or not page_size:
        return ParameterException(msg="缺少分页信息")
    try:
        page = int(page)
        page_size = int(page_size)
    except ValueError:
        return ParameterException("当前页或页数格式错误")
    user_id = g.user.uid
    if operate_type and not start_time and not end_time:
        operate_log_list_pagination = OperateLog.query.filter(
            OperateLog.operateType.like(f'%{operate_type}%'),
            OperateLog.operatorId == user_id,