Пример #1
0
 def test_parse_eq_other(self):
     parser = RequestParser()
     parser.add_argument("foo"),
     args = parser.parse_args(
         Request.from_values("/bubble?foo=bar&foo=bat"))
     self.assertEquals(args['foo'], "bar")
Пример #2
0
 def __init__(self):
     self.parser = RequestParser()
     self.parser.add_argument('order_id', type=str)
Пример #3
0
 def post(self):
     """
     新增用户
     """
     json_parser = RequestParser()
     json_parser.add_argument('account',
                              type=parser.mis_account,
                              required=True,
                              location='json')
     json_parser.add_argument('password',
                              type=parser.mis_password,
                              required=True,
                              location='json')
     json_parser.add_argument('name',
                              type=inputs.regex(r'^.{1,7}$'),
                              required=True,
                              location='json')
     json_parser.add_argument('profile_photo',
                              type=parser.image_base64,
                              required=False,
                              location='json')
     json_parser.add_argument('introduction',
                              required=False,
                              location='json')
     json_parser.add_argument('email',
                              type=parser.email,
                              required=False,
                              location='json')
     json_parser.add_argument('mobile',
                              type=parser.mobile,
                              required=True,
                              location='json')
     json_parser.add_argument('gender',
                              type=inputs.int_range(0, 1),
                              required=True,
                              location='json')
     json_parser.add_argument('area', required=False, location='json')
     json_parser.add_argument('company', required=False, location='json')
     json_parser.add_argument('career', required=False, location='json')
     args = json_parser.parse_args()
     if User.query.filter_by(account=args.account).first():
         return {'message': '{} already exists'.format(args.account)}, 403
     if User.query.filter_by(mobile=args.mobile).first():
         return {'message': '{} already exists'.format(args.mobile)}, 403
     user = User(account=args.account,
                 password=generate_password_hash(args.password),
                 name=args.name,
                 introduction=args.introduction,
                 email=args.email,
                 mobile=args.mobile,
                 status=User.STATUS.ENABLE,
                 last_login=datetime.now())
     if args.profile_photo:
         try:
             photo_url = upload_image(args.profile_photo)
             user.profile_photo = photo_url
         except Exception as e:
             current_app.logger.error('upload failed {}'.format(e))
             return {
                 'message': 'Uploading profile photo image failed.'
             }, 507
     db.session.add(user)
     db.session.commit()
     user_profile = UserProfile(id=user.id,
                                gender=args.gender,
                                area=args.area,
                                company=args.company,
                                career=args.career)
     db.session.add(user_profile)
     db.session.commit()
     return marshal(user, UserListResource.user_fields), 201
Пример #4
0
'''
@app.errorhandler(404)
def page_not_found(error):
    return render_template('error.html'), 404


@app.errorhandler(403)
def page_forbidden(error):
    return render_template('error.html'), 403


'''
Restful API handler
'''
# Request data configuration
data_parser = RequestParser()
data_parser.add_argument('user_msg', type=str, required=True, location='json')

# POST /api/v1/test
class Test(Resource):
    def post(self):
        try:
            args = data_parser.parse_args()
            user_msg = args['user_msg'].strip()
            return { 'state': True, 'answer': user_msg }, 200
        except Exception as e:
            return {'state': False, 'msg': e}, 204

api.add_resource(Test, '/test')

# Azure Run (Uncomment one of them)
Пример #5
0
from flask_restful import Resource, marshal_with, fields, marshal
from flask_restful.reqparse import RequestParser
from flask import request
from apiapp.models import TUserPost

rp1 = RequestParser()
view_output_instance = {
    "user_id": fields.Integer(attribute="id"),
    "sex": fields.String(attribute="sex"),
    "phone": fields.String(attribute="phone"),
    "Avatar_path": fields.String(attribute="Avatar_path"),
    "u_name": fields.String(attribute="u_name"),
}
view_output1 = {
    "post_id": fields.Integer(attribute="post_id"),
    "title": fields.String(attribute="title"),
    "content": fields.String(attribute="content"),
    "date": fields.DateTime(attribute="date"),
    "tie_pic": fields.String(attribute="tie_pic"),
    "user": fields.Nested(view_output_instance)
}
view_output = {
    "code": fields.String,
    "msg": fields.String,
    "data": fields.Nested(view_output1)  # ties为一个列表
}


class ViewDetailResource(Resource):
    def get(self):
        print("请求成功*******************")
Пример #6
0
"""
import string
import random

import sqlalchemy
from sqlalchemy import and_, func

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa

from flask_restful.reqparse import RequestParser

from lemur.exceptions import InvalidConfiguration

paginated_parser = RequestParser()

paginated_parser.add_argument('count', type=int, default=10, location='args')
paginated_parser.add_argument('page', type=int, default=1, location='args')
paginated_parser.add_argument('sortDir',
                              type=str,
                              dest='sort_dir',
                              location='args')
paginated_parser.add_argument('sortBy',
                              type=str,
                              dest='sort_by',
                              location='args')
paginated_parser.add_argument('filter', type=str, location='args')


def get_psuedo_random_string():
Пример #7
0
    owner = fields.Email()
    user = fields.Nested(UserNestedOutputSchema)
    validity_end = ArrowDateTime(attribute="not_after")
    replaced_by = fields.Nested(CertificateNestedOutputSchema,
                                many=True,
                                attribute="replaced")
    endpoints = fields.Nested(EndpointNestedOutputSchema,
                              many=True,
                              missing=[])


class CertificateRevokeSchema(LemurInputSchema):
    comments = fields.String()


certificates_list_request_parser = RequestParser()
certificates_list_request_parser.add_argument("short",
                                              type=inputs.boolean,
                                              default=False,
                                              location="args")


def certificates_list_output_schema_factory():
    args = certificates_list_request_parser.parse_args()
    if args["short"]:
        return certificates_short_output_schema
    else:
        return certificates_output_schema


certificate_input_schema = CertificateInputSchema()
Пример #8
0
from flask_restful.reqparse import RequestParser


dfbankparser = RequestParser(trim=True)

dfbankparser.add_argument('bankId', type=str)


dfbankpostparser = RequestParser(trim=True)

dfbankpostparser.add_argument('bankId', type=int)
dfbankpostparser.add_argument('name', type=str)
dfbankpostparser.add_argument('bankNumber', type=str)
dfbankpostparser.add_argument('d_bank', type=int)
Пример #9
0
    def get(self, article_id):
        """
        获取文章详情
        :param article_id: int 文章id
        """
        # 写入埋点日志
        qs_parser = RequestParser()
        qs_parser.add_argument('Trace', type=inputs.regex(r'^.+$'), required=False, location='headers')
        args = qs_parser.parse_args()

        user_id = g.user_id

        # 查询文章数据
        exist = cache_article.ArticleInfoCache(article_id).exists()
        if not exist:
            abort(404, message='The article does not exist.')

        article = cache_article.ArticleDetailCache(article_id).get()

        # 推荐系统所需埋点
        if args.Trace:
            write_trace_log(args.Trace, channel_id=article['ch_id'])

        article['is_followed'] = False
        article['attitude'] = None
        # 增加用户是否收藏了文章
        article['is_collected'] = False

        if user_id:
            # 非匿名用户添加用户的阅读历史
            try:
                cache_user.UserReadingHistoryStorage(user_id).save(article_id)
            except ConnectionError as e:
                current_app.logger.error(e)

            # 查询关注
            # article['is_followed'] = cache_user.UserFollowingCache(user_id).determine_follows_target(article['aut_id'])
            article['is_followed'] = cache_user.UserRelationshipCache(user_id).determine_follows_target(article['aut_id'])

            # 查询登录用户对文章的态度(点赞or不喜欢)
            try:
                # article['attitude'] = cache_article.ArticleUserAttitudeCache(user_id, article_id).get()
                article['attitude'] = cache_user.UserArticleAttitudeCache(user_id).get_article_attitude(article_id)
            except SQLAlchemyError as e:
                current_app.logger.error(e)
                article['attitude'] = -1

            # 增加用户是否收藏了文章
            article['is_collected'] = cache_user.UserArticleCollectionsCache(g.user_id).determine_collect_target(article_id)

        # 获取相关文章推荐
        article['recomments'] = []
        try:
            similar_articles = self._feed_similar_articles(article_id)
            for _article_id in similar_articles:
                _article = cache_article.ArticleInfoCache(_article_id).get()
                article['recomments'].append({
                    'art_id': _article['art_id'],
                    'title': _article['title']
                })
        except Exception as e:
            current_app.logger.error(e)

        # 更新阅读数
        cache_statistic.ArticleReadingCountStorage.incr(article_id)
        cache_statistic.UserArticlesReadingCountStorage.incr(article['aut_id'])

        return article
Пример #10
0
from flask_login import login_required, current_user
from flask_restful import Resource, marshal
from flask_restful.reqparse import RequestParser
from sqlalchemy import and_, or_

from . import dataformat
from compair.core import db, event, abort
from compair.authorization import require
from compair.models import User, Answer, Assignment, Course, AnswerComment, \
    CourseRole, SystemRole, AnswerCommentType
from .util import new_restful_api, get_model_changes, pagination_parser

answer_comment_api = Blueprint('answer_comment_api', __name__)
api = new_restful_api(answer_comment_api)

new_answer_comment_parser = RequestParser()
new_answer_comment_parser.add_argument('user_id', default=None)
new_answer_comment_parser.add_argument('content')
new_answer_comment_parser.add_argument('comment_type',
                                       required=True,
                                       nullable=False)
new_answer_comment_parser.add_argument('draft', type=bool, default=False)
new_answer_comment_parser.add_argument('evaluation_number',
                                       type=int,
                                       default=None)
new_answer_comment_parser.add_argument('attempt_uuid', default=None)
new_answer_comment_parser.add_argument('attempt_started', default=None)
new_answer_comment_parser.add_argument('attempt_ended', default=None)

existing_answer_comment_parser = new_answer_comment_parser.copy()
existing_answer_comment_parser.add_argument('id',
Пример #11
0
def get_args_and_verify_arguments(arguments):
    request_parser = RequestParser()
    for argument in arguments:
        argument.location = 'args'
        request_parser.args.append(argument)
    return request_parser.parse_args()
Пример #12
0
 def test_namespace_configurability(self):
     self.assertTrue(isinstance(RequestParser().parse_args(), Namespace))
     self.assertTrue(
         type(RequestParser(namespace_class=dict).parse_args()) is dict)
Пример #13
0
 def test_chaining(self):
     parser = RequestParser()
     self.assertTrue(parser is parser.add_argument("foo"))
Пример #14
0
 def test_parse_eq(self):
     req = Request.from_values("/bubble?foo=bar")
     parser = RequestParser()
     parser.add_argument("foo"),
     args = parser.parse_args(req)
     self.assertEquals(args['foo'], "bar")
Пример #15
0
def non_blank_text(value):
    if value is None:
        return None
    else:
        return None if text_type(value).strip() == "" else text_type(value)


def string_to_bool(value):
    if value is None:
        return None
    else:
        return strtobool(value)


new_user_parser = RequestParser()
new_user_parser.add_argument('username', type=non_blank_text, required=False)
new_user_parser.add_argument('student_number', type=non_blank_text)
new_user_parser.add_argument('system_role', default=None)
new_user_parser.add_argument('firstname', type=non_blank_text)
new_user_parser.add_argument('lastname', type=non_blank_text)
new_user_parser.add_argument('displayname', required=True, nullable=False)
new_user_parser.add_argument('email')
new_user_parser.add_argument('email_notification_method')
new_user_parser.add_argument('password', required=False)

existing_user_parser = RequestParser()
existing_user_parser.add_argument('id', required=True, nullable=False)
existing_user_parser.add_argument('username',
                                  type=non_blank_text,
                                  required=False)
Пример #16
0
from functools import wraps

from flask import redirect, render_template, jsonify, current_app
from flask_login import login_required, current_user
from flask import make_response
from flask import send_file, url_for, redirect, request
from flask_restful.reqparse import RequestParser

from bouncer.constants import READ
from compair.authorization import require
from compair.kaltura import KalturaAPI
from compair.models import File
from compair.core import event
on_get_file = event.signal('GET_FILE')

attachment_download_parser = RequestParser()
attachment_download_parser.add_argument('name', default=None)

def register_api_blueprints(app):
    # Initialize rest of the api modules
    from .course import course_api
    app.register_blueprint(
        course_api,
        url_prefix='/api/courses')

    from .classlist import classlist_api
    app.register_blueprint(
        classlist_api,
        url_prefix='/api/courses/<course_uuid>/users')

    from .group import group_api
Пример #17
0
from werkzeug.security import check_password_hash, generate_password_hash
from flask_restful.reqparse import RequestParser
import re

from resources import *
from models.users import User
from models.blacklists import Blacklist

#Validating the arguments
user_validation = RequestParser(bundle_errors=True)
user_validation.add_argument("user_password",
                             type=str,
                             required=True,
                             help="Password is missing")
user_validation.add_argument("user_email",
                             type=str,
                             required=True,
                             help="Email is missing")
user_validation.add_argument("user_name",
                             type=str,
                             required=False,
                             help="Username is missing")


class UserRegister(Resource):
    """Class to handle user registration"""
    @swag_from("../APIdocs/CreateUser.yml")
    def post(self):
        """"User registration with email and password"""
        user_email = user_validation.parse_args().user_email.strip()
        user_name = user_validation.parse_args().user_name
Пример #18
0
    def get(self):
        """
        获取搜索结果
        """
        if g.use_token and not g.user_id:
            return {'message': 'Token has some errors.'}, 401

        qs_parser = RequestParser()
        qs_parser.add_argument('q',
                               type=inputs.regex(r'^.{1,50}$'),
                               required=True,
                               location='args')
        qs_parser.add_argument('page',
                               type=inputs.positive,
                               required=False,
                               location='args')
        qs_parser.add_argument('per_page',
                               type=inputs.int_range(
                                   constants.DEFAULT_SEARCH_PER_PAGE_MIN,
                                   constants.DEFAULT_SEARCH_PER_PAGE_MAX,
                                   'per_page'),
                               required=False,
                               location='args')
        args = qs_parser.parse_args()
        q = args.q
        page = 1 if args.page is None else args.page
        per_page = args.per_page if args.per_page else constants.DEFAULT_SEARCH_PER_PAGE_MIN

        # Search from Elasticsearch
        query = {
            'from': (page - 1) * per_page,
            'size': per_page,
            '_source': False,
            'query': {
                'bool': {
                    'must': [{
                        'match': {
                            '_all': q
                        }
                    }],
                    'filter': [{
                        'term': {
                            'status': {
                                'value': 2
                            }
                        }
                    }]
                }
            }
        }
        ret = current_app.es.search(index='articles',
                                    doc_type='article',
                                    body=query)

        total_count = ret['hits']['total']

        results = []

        hits = ret['hits']['hits']
        for result in hits:
            article_id = int(result['_id'])
            article = cache_article.ArticleInfoCache(article_id).get()
            if article:
                results.append(article)

        # Record user search history
        if g.user_id and page == 1:
            try:
                cache_user.UserSearchingHistoryStorage(g.user_id).save(q)
            except RedisError as e:
                current_app.logger.error(e)

        # Add new es index doc
        if total_count and page == 1:
            query = {'_source': False, 'query': {'match': {'suggest': q}}}
            ret = current_app.es.search(index='completions',
                                        doc_type='words',
                                        body=query)
            if ret['hits']['total'] == 0:
                doc = {
                    'suggest': {
                        'input': q,
                        'weight': constants.USER_KEYWORD_ES_SUGGEST_WEIGHT
                    }
                }
                try:
                    current_app.es.index(index='completions',
                                         doc_type='words',
                                         body=doc)
                except Exception:
                    pass

        return {
            'total_count': total_count,
            'page': page,
            'per_page': per_page,
            'results': results
        }
Пример #19
0
 def put(self):
     parser = RequestParser()
     parser.add_argument('location', location='json', required=True)
     params = parser.parse_args()
     return params['location']
Пример #20
0
    def get(self):
        parser = RequestParser(trim=True)
        parser.add_argument('page', type=int, default=DEFAULT_PAGE)
        parser.add_argument('pageSize', type=int, default=DEFAULT_PAGE_SIZE)

        parser.add_argument('id', type=str)
        parser.add_argument('accountChangeType', type=str)
        parser.add_argument('isAcdemen', type=int)
        parser.add_argument('timeLower', type=int)
        parser.add_argument('timeUpper', type=int)
        parser.add_argument('amountLower', type=float)
        parser.add_argument('amountUpper', type=float)
        parser.add_argument('rechargeid', type=str)
        parser.add_argument('orderId', type=str)
        parser.add_argument('memberUsername', type=str)
        parser.add_argument('memberLevelConfig', type=str)
        parser.add_argument('memberParentUsername', type=str)
        args = parser.parse_args(strict=True)
        args['accountChangeType'] = args['accountChangeType'].split(',')
        criterion = set()
        criterion.add(Member.isTsetPLay != 1)
        if args['id']:
            criterion.add(
                MemberAccountChangeRecord.id.in_(args['id'].split(',')))

        if args['isAcdemen'] is not None:
            if args['isAcdemen'] == 1:
                criterion.add(
                    MemberAccountChangeRecord.isAcdemen == args['isAcdemen'])
                if '6' in args['accountChangeType']:
                    args['accountChangeType'].remove('6')
            else:
                criterion.add(
                    or_(MemberAccountChangeRecord.isAcdemen.is_(None),
                        MemberAccountChangeRecord.isAcdemen == 0))
        if args['rechargeid']:
            criterion.add(
                MemberAccountChangeRecord.rechargeid == args['rechargeid'])
        if args['accountChangeType']:
            criterion.add(
                MemberAccountChangeRecord.accountChangeType.in_(
                    args['accountChangeType']))
        if args['timeLower']:
            criterion.add(MemberAccountChangeRecord.time >= args['timeLower'])
        if args['timeUpper']:
            criterion.add(MemberAccountChangeRecord.time <= args['timeUpper'] +
                          SECONDS_PER_DAY)
        # if args['amountUpper']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountUpper'])
        # if args['amountLower']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountLower'])
        if args['amountUpper'] is not None and args['amountLower'] is not None:
            if args['amountUpper'] >= args['amountLower']:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])
        elif args['amountUpper'] is not None:
            if args['amountUpper'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
        elif args['amountLower'] is not None:
            if args['amountLower'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])

        if args['orderId']:
            criterion.add(MemberAccountChangeRecord.orderId == args['orderId'])
        if args['memberUsername']:
            criterion.add(
                Member.username.in_(args['memberUsername'].split(',')))
        if args['memberLevelConfig']:
            criterion.add(
                Member.levelConfig.in_(args['memberLevelConfig'].split(',')))
        # 		if args['memberLevelConfig'] is None:
        # 			criterion.add(Member.levelConfig == '')
        if args['memberParentUsername']:
            parent = Member.query.filter(
                Member.username == args['memberParentUsername']).first()
            if parent:
                criterion.add(Member.parent == parent.id)
        query = db.session.query(
            MemberAccountChangeRecord.orderId.label('orderId'),
            Member.username.label('username'),
            MemberLevel.levelName.label('levelName'),
            MemberAccountChangeRecord.time.label('time'),
            MemberAccountChangeRecord.info.label('accountChangeTypesName'),
            MemberAccountChangeRecord.amount.label('amount'),
            MemberAccountChangeRecord.memberBalance.label('memberBalance'),
            User.username.label('OperatorName'),
            User.username.label('dealName'),
        ).order_by(MemberAccountChangeRecord.time.desc())
        query = query.outerjoin(
            Member, MemberAccountChangeRecord.memberId == Member.id)
        query = query.outerjoin(MemberLevel,
                                Member.levelConfig == MemberLevel.id)
        query = query.outerjoin(User,
                                User.id == MemberAccountChangeRecord.actionUID)
        result_query = []
        if args['accountChangeType']:
            if '6' in args['accountChangeType']:
                query_yule = db.session.query(
                    EntertainmentCityBetsDetail.BillNo.label('orderId'),
                    Member.username.label('username'),
                    MemberLevel.levelName.label('levelName'),
                    EntertainmentCityBetsDetail.BetTime.label('time'),
                    func.concat(EntertainmentCityBetsDetail.ECCode,
                                '-派彩').label('accountChangeTypesName'),
                    EntertainmentCityBetsDetail.Profit.label('amount'),
                    EntertainmentCityBetsDetail.Balance.label('memberBalance'),
                    literal('').label('OperatorName'),
                    literal('').label('dealName'),
                ).order_by(EntertainmentCityBetsDetail.BetTime.desc())
                query_yule = query_yule.outerjoin(
                    Member,
                    EntertainmentCityBetsDetail.PlayerName == Member.username)
                query_yule = query_yule.outerjoin(
                    MemberLevel, Member.levelConfig == MemberLevel.id)
                criterion_query = set()
                if args['id']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.id.in_(
                            args['id'].split(',')))
                if args['rechargeid']:
                    criterion_query.add(EntertainmentCityBetsDetail.BillNo ==
                                        args['rechargeid'])
                if args['timeLower']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime >=
                                        args['timeLower'])
                if args['timeUpper']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime <=
                                        args['timeUpper'] + SECONDS_PER_DAY)
                # if args['amountLower']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount >= args['amountLower'])
                # if args['amountUpper']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount <= args['amountUpper'])
                if args['amountUpper'] is not None and args[
                        'amountLower'] is not None:
                    if args['amountUpper'] >= args['amountLower']:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])
                elif args['amountUpper'] is not None:
                    if args['amountUpper'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                elif args['amountLower'] is not None:
                    if args['amountLower'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])

                if args['orderId']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.BillNo == args['orderId'])
                if args['memberUsername']:
                    criterion_query.add(
                        Member.username.in_(args['memberUsername'].split(',')))
                if args['memberLevelConfig']:
                    criterion_query.add(
                        Member.levelConfig.in_(
                            args['memberLevelConfig'].split(',')))
                # 				if args['memberLevelConfig'] is None:
                # 					criterion_query.add(Member.levelConfig == '')
                if args['memberParentUsername']:
                    parent = Member.query.filter(
                        Member.username ==
                        args['memberParentUsername']).first()
                    if parent:
                        criterion_query.add(Member.parent == parent.id)
                query = query.filter(*criterion)
                query_yule = query_yule.filter(*criterion_query)
                # union_all 拼接数据
                result = union_all(query, query_yule)

                # 将拼接好的数据重新命名,变成一个新的查询表
                user_alias = aliased(result, name='user_alias')
                user_alias = db.session.query(user_alias).order_by(
                    user_alias.c.time.desc()).all()
                results = []
                for item in user_alias:
                    results.append(
                        (item[0], item[1], item[2], changeData_str(item[3]),
                         item[4], item[5], item[6], item[7], item[8]))
                title = [
                    '单号', '帐号', '会员等级', '操作时间', '信息', '金额', '小计', '操作人员',
                    '处理人员', '其他'
                ]
                workbook = Workbook()
                worksheet = workbook.active

                worksheet.append(title)
                worksheet.column_dimensions['A'].width = 20
                worksheet.column_dimensions['B'].width = 10
                worksheet.column_dimensions['C'].width = 18
                worksheet.column_dimensions['D'].width = 20
                worksheet.column_dimensions['E'].width = 15
                worksheet.column_dimensions['F'].width = 8
                worksheet.column_dimensions['G'].width = 8
                worksheet.column_dimensions['H'].width = 8
                worksheet.column_dimensions['I'].width = 8
                worksheet.column_dimensions['J'].width = 8
                for result in results:
                    worksheet.append(result)
                filename = '交易记录-' + str(int(time.time())) + '.xlsx'
                workbook.save(os.path.join(current_app.static_folder,
                                           filename))
                return make_response([{
                    'success': True,
                    'resultFilename': filename,
                }])

        query = query.filter(*criterion).all()
        results = []
        for item in query:
            results.append((item[0], item[1], item[2], changeData_str(item[3]),
                            item[4], item[5], item[6], item[7], item[8]))
        title = [
            '单号', '帐号', '会员等级', '操作时间', '信息', '金额', '小计', '操作人员', '处理人员', '其他'
        ]
        workbook = Workbook()
        worksheet = workbook.active

        worksheet.append(title)
        worksheet.column_dimensions['A'].width = 20
        worksheet.column_dimensions['B'].width = 10
        worksheet.column_dimensions['C'].width = 18
        worksheet.column_dimensions['D'].width = 20
        worksheet.column_dimensions['E'].width = 15
        worksheet.column_dimensions['F'].width = 8
        worksheet.column_dimensions['G'].width = 8
        worksheet.column_dimensions['H'].width = 8
        worksheet.column_dimensions['I'].width = 8
        worksheet.column_dimensions['J'].width = 8
        for result in results:
            worksheet.append(result)
        filename = '交易记录-' + str(int(time.time())) + '.xlsx'
        workbook.save(os.path.join(current_app.static_folder, filename))
        return make_response([{
            'success': True,
            'resultFilename': filename,
        }])
Пример #21
0
from flask import Blueprint, make_response, jsonify, request, redirect, url_for, flash
from flask_jwt_extended import jwt_required, get_jwt_identity, jwt_optional
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_login import current_user, login_required
from app.db import db
from app.models import Article, Publisher, User, ReadArticleLink
from datetime import date, timedelta
from app.constants import *
import requests
import time

pay_req_parser = RequestParser(bundle_errors=True)
pay_req_parser.add_argument('url', required=True)
pay_req_parser.add_argument('domain', required=True)
pay_req_parser.add_argument('article_price')
pay_req_parser.add_argument('article_name')
pay_req_parser.add_argument('article_desc')
pay_req_parser.add_argument('article_date')
pay_req_parser.add_argument('article_category')

access_req_parser = RequestParser(bundle_errors=True)
access_req_parser.add_argument('url')
access_req_parser.add_argument('domain')
access_req_parser.add_argument('article_name')
access_req_parser.add_argument('article_desc')
access_req_parser.add_argument('article_date')
access_req_parser.add_argument('article_category')

api_bp = Blueprint('api', __name__)
api = Api(api_bp)
Пример #22
0
    def get(self):
        parser = RequestParser(trim=True)
        parser.add_argument('page', type=int, default=DEFAULT_PAGE)
        parser.add_argument('pageSize', type=int, default=DEFAULT_PAGE_SIZE)

        parser.add_argument('id', type=str)
        parser.add_argument('accountChangeType', type=str)
        parser.add_argument('isAcdemen', type=int)
        parser.add_argument('timeLower', type=int)
        parser.add_argument('timeUpper', type=int)
        parser.add_argument('amountLower', type=float)
        parser.add_argument('amountUpper', type=float)
        parser.add_argument('rechargeid', type=str)
        parser.add_argument('orderId', type=str)
        parser.add_argument('memberUsername', type=str)
        parser.add_argument('memberLevelConfig', type=str)
        parser.add_argument('memberParentUsername', type=str)
        args = parser.parse_args(strict=True)
        args['accountChangeType'] = args['accountChangeType'].split(',')
        criterion = set()
        criterion.add(Member.isTsetPLay != 1)
        if args['id']:
            criterion.add(
                MemberAccountChangeRecord.id.in_(args['id'].split(',')))

        if args['isAcdemen'] is not None:
            if args['isAcdemen'] == 1:
                criterion.add(
                    MemberAccountChangeRecord.isAcdemen == args['isAcdemen'])
                if '6' in args['accountChangeType']:
                    args['accountChangeType'].remove('6')
            else:
                criterion.add(
                    or_(MemberAccountChangeRecord.isAcdemen.is_(None),
                        MemberAccountChangeRecord.isAcdemen == 0))
        if args['rechargeid']:
            criterion.add(
                MemberAccountChangeRecord.rechargeid == args['rechargeid'])
        if args['accountChangeType']:
            criterion.add(
                MemberAccountChangeRecord.accountChangeType.in_(
                    args['accountChangeType']))
        if args['timeLower']:
            criterion.add(MemberAccountChangeRecord.time >= args['timeLower'])
        if args['timeUpper']:
            criterion.add(MemberAccountChangeRecord.time <= args['timeUpper'] +
                          SECONDS_PER_DAY)
        # if args['amountUpper']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountUpper'])
        # if args['amountLower']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountLower'])
        if args['amountUpper'] is not None and args['amountLower'] is not None:
            if args['amountUpper'] >= args['amountLower']:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])
        elif args['amountUpper'] is not None:
            if args['amountUpper'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
        elif args['amountLower'] is not None:
            if args['amountLower'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])

        if args['orderId']:
            criterion.add(MemberAccountChangeRecord.orderId == args['orderId'])
        if args['memberUsername']:
            criterion.add(
                Member.username.in_(args['memberUsername'].split(',')))
        if args['memberLevelConfig']:
            criterion.add(
                Member.levelConfig.in_(args['memberLevelConfig'].split(',')))
# 		if args['memberLevelConfig'] is None:
# 			criterion.add(Member.levelConfig == '')
        if args['memberParentUsername']:
            parent = Member.query.filter(
                Member.username == args['memberParentUsername']).first()
            if parent:
                criterion.add(Member.parent == parent.id)
        query = db.session.query(
            MemberAccountChangeRecord.id.label('id'),
            MemberAccountChangeRecord.orderId.label('orderId'),
            MemberAccountChangeRecord.time.label('time'),
            MemberAccountChangeRecord.accountChangeType.label(
                'accountChangeType'),
            MemberAccountChangeRecord.info.label('accountChangeTypesName'),
            MemberAccountChangeRecord.amount.label('amount'),
            MemberAccountChangeRecord.rechargeid.label('rechargeid'),
            MemberAccountChangeRecord.memberBalance.label('balanceAfter'),
            literal(0).label('balanceBefore'),
            MemberAccountChangeRecord.memberFrozenBalance.label(
                'frozenBalanceBefore'),
            literal('KK').label('eccode'), Member.id.label('memberId'),
            Member.username.label('username'), Member.type.label('memberType'),
            MemberLevel.levelName.label('levelName'),
            MemberLevel.id.label('levelId'),
            User.username.label('OperatorName')).order_by(
                MemberAccountChangeRecord.time.desc())

        query = query.outerjoin(
            Member, MemberAccountChangeRecord.memberId == Member.id)
        query = query.outerjoin(MemberLevel,
                                Member.levelConfig == MemberLevel.id)
        query = query.outerjoin(User,
                                User.id == MemberAccountChangeRecord.actionUID)
        result_query = []
        if args['accountChangeType']:
            if '6' in args['accountChangeType']:
                query_yule = db.session.query(
                    EntertainmentCityBetsDetail.id.label('id'),
                    EntertainmentCityBetsDetail.BillNo.label('orderId'),
                    EntertainmentCityBetsDetail.BetTime.label('time'),
                    literal(6).label('accountChangeType'),
                    EntertainmentCityBetsDetail.Remark.label(
                        'accountChangeTypesName'),
                    EntertainmentCityBetsDetail.Profit.label('amount'),
                    EntertainmentCityBetsDetail.BillNo.label('rechargeid'),
                    EntertainmentCityBetsDetail.Balance.label('balanceAfter'),
                    literal(0).label('balanceBefore'),
                    EntertainmentCityBetsDetail.CusAccount.label(
                        'frozenBalanceBefore'),
                    EntertainmentCityBetsDetail.ECCode.label('eccode'),
                    Member.id.label('memberId'),
                    Member.username.label('username'),
                    Member.type.label('memberType'),
                    MemberLevel.levelName.label('levelName'),
                    MemberLevel.id.label('levelId'),
                    literal('').label('OperatorName')).order_by(
                        EntertainmentCityBetsDetail.BetTime.desc())
                query_yule = query_yule.outerjoin(
                    Member,
                    EntertainmentCityBetsDetail.PlayerName == Member.username)
                query_yule = query_yule.outerjoin(
                    MemberLevel, Member.levelConfig == MemberLevel.id)
                criterion_query = set()
                if args['id']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.id.in_(
                            args['id'].split(',')))
                if args['rechargeid']:
                    criterion_query.add(EntertainmentCityBetsDetail.BillNo ==
                                        args['rechargeid'])
                if args['timeLower']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime >=
                                        args['timeLower'])
                if args['timeUpper']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime <=
                                        args['timeUpper'] + SECONDS_PER_DAY)
                # if args['amountLower']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount >= args['amountLower'])
                # if args['amountUpper']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount <= args['amountUpper'])
                if args['amountUpper'] is not None and args[
                        'amountLower'] is not None:
                    if args['amountUpper'] >= args['amountLower']:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])
                elif args['amountUpper'] is not None:
                    if args['amountUpper'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                elif args['amountLower'] is not None:
                    if args['amountLower'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])

                if args['orderId']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.BillNo == args['orderId'])
                if args['memberUsername']:
                    criterion_query.add(
                        Member.username.in_(args['memberUsername'].split(',')))
                if args['memberLevelConfig']:
                    criterion_query.add(
                        Member.levelConfig.in_(
                            args['memberLevelConfig'].split(',')))
# 				if args['memberLevelConfig'] is None:
# 					criterion_query.add(Member.levelConfig == '')
                if args['memberParentUsername']:
                    parent = Member.query.filter(
                        Member.username ==
                        args['memberParentUsername']).first()
                    if parent:
                        criterion_query.add(Member.parent == parent.id)
                query = query.filter(*criterion)
                query_yule = query_yule.filter(*criterion_query)
                # union_all 拼接数据
                result = union_all(query, query_yule)

                # 将拼接好的数据重新命名,变成一个新的查询表
                user_alias = aliased(result, name='user_alias')
                user_alias = db.session.query(user_alias).order_by(
                    user_alias.c.time.desc())

                pagination = paginate_one(user_alias, args['page'],
                                          args['pageSize'])
                pagination = convert_pagination(pagination)

                total_amount = 0
                for item in pagination.items:
                    total_amount += item['amount']
                    item[
                        'accountChangeTypeName'] = MemberAccountChangeTypes.d.get(
                            item['accountChangeType'])

# 					if item['accountChangeType'] in [100001, 100002]:
# 						item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore']
#
# 					if item['accountChangeType'] in [200001]:
# 						item['balanceAfter'] = item['balanceBefore'] - item['amount']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore'] + item['amount']
#
# 					if item['accountChangeType'] in [200002]:
# 						item['balanceAfter'] = item['balanceBefore']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore'] - item['amount']
#
# 					if item['accountChangeType'] in [200003]:
# 						item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore'] - item['amount']
#
# 					if item['accountChangeType'] in [900001]:
# 						item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore']
#
# 					if item['accountChangeType'] in [900002]:
# 						item['balanceAfter'] = item['balanceBefore'] - item['amount']
# 						item['frozenBalanceAfter'] = item['frozenBalanceBefore']
                return make_response_from_pagination(pagination,
                                                     totalAmount=total_amount)
        pagination = paginate(query, criterion, args['page'], args['pageSize'])
        pagination = convert_pagination(pagination)
        total_amount = 0
        for item in pagination.items:
            total_amount += item['amount']


# 			item['accountChangeTypeName'] = MemberAccountChangeTypes.d.get(item['accountChangeType'])
#
# 			if item['accountChangeType'] in [100001, 100002]:
# 				item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore']
#
# 			if item['accountChangeType'] in [200001]:
# 				item['balanceAfter'] = item['balanceBefore'] - item['amount']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore'] + item['amount']
#
# 			if item['accountChangeType'] in [200002]:
# 				item['balanceAfter'] = item['balanceBefore']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore'] - item['amount']
#
# 			if item['accountChangeType'] in [200003]:
# 				item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore'] - item['amount']
#
# 			if item['accountChangeType'] in [900001]:
# 				item['balanceAfter'] = item['balanceBefore'] + item['amount']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore']
#
# 			if item['accountChangeType'] in [900002]:
# 				item['balanceAfter'] = item['balanceBefore'] - item['amount']
# 				item['frozenBalanceAfter'] = item['frozenBalanceBefore']
        return make_response_from_pagination(pagination,
                                             totalAmount=total_amount)
Пример #23
0
from flask_restful.reqparse import RequestParser

dfcashwithdrawalparser = RequestParser(trim=True)

dfcashwithdrawalparser.add_argument('mer_code', type=str)
dfcashwithdrawalparser.add_argument('sign', type=str)
dfcashwithdrawalparser.add_argument('org_order_no', type=str)
dfcashwithdrawalparser.add_argument('name', type=str)
dfcashwithdrawalparser.add_argument('account_number', type=str)
dfcashwithdrawalparser.add_argument('amount', type=str)
dfcashwithdrawalparser.add_argument('bankcard', type=int)
dfcashwithdrawalparser.add_argument('action_time', type=int)

dfgetwithdrawalparser = RequestParser(trim=True)

dfgetwithdrawalparser.add_argument('mer_code', type=str)
dfgetwithdrawalparser.add_argument('org_order_no', type=str)
dfgetwithdrawalparser.add_argument('sign', type=str)
Пример #24
0
    def get(self):
        parser = RequestParser(trim=True)
        parser.add_argument('page', type=int, default=DEFAULT_PAGE)
        parser.add_argument('pageSize', type=int, default=DEFAULT_PAGE_SIZE)

        parser.add_argument('id', type=str)
        parser.add_argument('accountChangeType', type=str)
        parser.add_argument('timeLower', type=int)
        parser.add_argument('timeUpper', type=int)
        parser.add_argument('amountLower', type=float)
        parser.add_argument('amountUpper', type=float)
        parser.add_argument('rechargeid', type=int)
        parser.add_argument('orderId', type=int)
        parser.add_argument('memberUsername', type=str)
        parser.add_argument('memberLevelConfig', type=str)
        parser.add_argument('memberParentUsername', type=str)
        args = parser.parse_args(strict=True)

        criterion = set()
        if args['id']:
            criterion.add(
                MemberAccountChangeRecord.id.in_(args['id'].split(',')))
        if args['rechargeid']:
            criterion.add(
                MemberAccountChangeRecord.rechargeid == args['rechargeid'])
        if args['accountChangeType']:
            criterion.add(
                MemberAccountChangeRecord.accountChangeType.in_(
                    args['accountChangeType'].split(',')))
        if args['timeLower']:
            criterion.add(MemberAccountChangeRecord.time >= args['timeLower'])
        if args['timeUpper']:
            criterion.add(MemberAccountChangeRecord.time <= args['timeUpper'] +
                          SECONDS_PER_DAY)
        if args['amountLower']:
            criterion.add(
                MemberAccountChangeRecord.amount >= args['amountLower'])
        if args['amountUpper']:
            criterion.add(
                MemberAccountChangeRecord.amount <= args['amountUpper'])
        if args['orderId']:
            criterion.add(MemberAccountChangeRecord.orderId == args['orderId'])

        # member_criterion = set()
        if args['memberUsername']:
            criterion.add(
                Member.username.in_(args['memberUsername'].split(',')))
        if args['memberLevelConfig']:
            criterion.add(
                Member.levelConfig.in_(args['memberLevelConfig'].split(',')))
        if args['memberParentUsername']:
            parent = Member.query.filter(
                Member.username == args['memberParentUsername']).first()
            if parent:
                criterion.add(Member.parent == parent.id)

        # subquery = db.session.query(
        #
        # ).join(MemberLevel, Member.levelConfig == MemberLevel.id).filter(*member_criterion).subquery()

        query = db.session.query(
            MemberAccountChangeRecord.id, MemberAccountChangeRecord.memberId,
            MemberAccountChangeRecord.orderId, MemberAccountChangeRecord.time,
            MemberAccountChangeRecord.accountChangeType,
            MemberAccountChangeRecord.amount,
            MemberAccountChangeRecord.rechargeid,
            MemberAccountChangeRecord.memberBalance.label('balanceBefore'),
            MemberAccountChangeRecord.memberFrozenBalance.label(
                'frozenBalanceBefore'), Member.id.label('memberId'),
            Member.username, MemberLevel.levelName,
            MemberLevel.id.label('levelId'), User.username.label('UsersName'))

        query = query.outerjoin(
            Member, MemberAccountChangeRecord.memberId == Member.id)
        query = query.outerjoin(MemberLevel,
                                Member.levelConfig == MemberLevel.id)
        query = query.outerjoin(User,
                                User.id == MemberAccountChangeRecord.actionUID)
        pagination = paginate(query, criterion, args['page'], args['pageSize'])
        pagination = convert_pagination(pagination)

        total_amount = 0
        for item in pagination.items:
            total_amount += item['amount']
            item['accountChangeTypeName'] = MemberAccountChangeTypes.d.get(
                item['accountChangeType'])

            if item['accountChangeType'] in [100001, 100002]:
                item['balanceAfter'] = item['balanceBefore'] + item['amount']
                item['frozenBalanceAfter'] = item['frozenBalanceBefore']

            if item['accountChangeType'] in [200001]:
                item['balanceAfter'] = item['balanceBefore'] - item['amount']
                item['frozenBalanceAfter'] = item[
                    'frozenBalanceBefore'] + item['amount']

            if item['accountChangeType'] in [200002]:
                item['balanceAfter'] = item['balanceBefore']
                item['frozenBalanceAfter'] = item[
                    'frozenBalanceBefore'] - item['amount']

            if item['accountChangeType'] in [200003]:
                item['balanceAfter'] = item['balanceBefore'] + item['amount']
                item['frozenBalanceAfter'] = item[
                    'frozenBalanceBefore'] - item['amount']

            if item['accountChangeType'] in [900001]:
                item['balanceAfter'] = item['balanceBefore'] + item['amount']
                item['frozenBalanceAfter'] = item['frozenBalanceBefore']

            if item['accountChangeType'] in [900002]:
                item['balanceAfter'] = item['balanceBefore'] - item['amount']
                item['frozenBalanceAfter'] = item['frozenBalanceBefore']

        return make_response_from_pagination(pagination,
                                             totalAmount=total_amount)
Пример #25
0
    def put(self, id):
        parser = RequestParser(trim=True)
        parser.add_argument('enabled', type=int)
        parser.add_argument('chat', type=int)
        parser.add_argument('verificationByPhone', type=int)
        parser.add_argument('verificationByGoogle', type=int)
        parser.add_argument('verificationByEmail', type=int)
        parser.add_argument('oldPassword', type=str)
        parser.add_argument('newPassword', type=str)
        parser.add_argument('phone', type=str)
        parser.add_argument('email', type=str)
        parser.add_argument('menus', type=str)
        parser.add_argument('systemDepositLimitOnce', type=str)
        parser.add_argument('systemDepositLimitCount', type=str)
        parser.add_argument('systemDepositLimitTotal', type=int)
        parser.add_argument('withdrawallimitOnce', type=str)
        parser.add_argument('withdrawallimitSumCeiling', type=str)
        parser.add_argument('withdrawallimitSum', type=int)
        parser.add_argument('remark', type=str)
        args = parser.parse_args(strict=True)

        user = User.query.get(id)
        if not user:
            abort(400)
        if args['enabled'] is not None:
            user.enabled = args['enabled']
        if args['chat'] is not None:
            user.chat = args['chat']
        if args['verificationByPhone'] is not None:
            user.verificationByPhone = args['verificationByPhone']
        if args['verificationByGoogle'] is not None:
            user.verificationByGoogle = args['verificationByGoogle']
        if args['verificationByEmail'] is not None:
            user.verificationByEmail = args['verificationByEmail']

        if args['oldPassword'] and args['newPassword']:

            if not user.verify_password(args['oldPassword']):
                return make_response(error_code=400, error_message="旧密码输入错误")
            if args['oldPassword'] == args['newPassword']:
                return make_response(error_code=400, error_message="新旧密码一致")

            pattern = "^[A-Za-z0-9]{6,15}$"
            re_result = re.match(pattern, args['newPassword'])
            if re_result is None:
                return make_response(error_code=400, error_message="新密码格式不正确")
            if user.verify_password(args['oldPassword']):
                user.password = args['newPassword']

        if args['phone']:
            user.phone = args['phone']
        if args['email']:
            user.email = args['email']
        if args['systemDepositLimitOnce']:
            user.systemDepositLimitOnce = args['systemDepositLimitOnce']
        if args['systemDepositLimitCount']:
            user.systemDepositLimitCount = args['systemDepositLimitCount']
        if args['systemDepositLimitTotal'] is not None:
            user.systemDepositLimitTotal = args['systemDepositLimitTotal']

        if args['withdrawallimitOnce']:
            user.withdrawallimitOnce = args['withdrawallimitOnce']
        if args['withdrawallimitSumCeiling']:
            user.withdrawallimitSumCeiling = args['withdrawallimitSumCeiling']
        if args['withdrawallimitSum'] is not None:
            user.withdrawallimitSum = args['withdrawallimitSum']
        if args['remark']:
            user.remark = args['remark']
        if args['menus'] == "":
            return {"errorCode": 400, "errorMsg": "请选择用户权限"}
        if args['menus']:
            user.menus.clear()
            db.session.commit()

            menu_id_list = args.pop('menus').split(',')
            for menu_id in menu_id_list:
                menu = Menu.query.get(menu_id)
                if menu and menu not in user.menus:
                    user.menus.append(menu)

        try:
            db.session.add(user)
            db.session.commit()
        except:
            db.session.rollback()
            db.session.remove()
            abort(500)
        return make_response([{'password': args.get('newPassword')}])
Пример #26
0
    def get(self):
        parser = RequestParser(trim=True)
        parser.add_argument('page', type=int, default=DEFAULT_PAGE)
        parser.add_argument('pageSize', type=int, default=DEFAULT_PAGE_SIZE)

        parser.add_argument('id', type=str)
        parser.add_argument('accountChangeType', type=str)
        parser.add_argument('isAcdemen', type=int)
        parser.add_argument('timeLower', type=int)
        parser.add_argument('timeUpper', type=int)
        parser.add_argument('amountLower', type=float)
        parser.add_argument('amountUpper', type=float)
        parser.add_argument('rechargeid', type=str)
        parser.add_argument('orderId', type=str)
        parser.add_argument('memberUsername', type=str)
        parser.add_argument('memberLevelConfig', type=str)
        parser.add_argument('memberParentUsername', type=str)
        args = parser.parse_args(strict=True)
        args['accountChangeType'] = args['accountChangeType'].split(',')
        criterion = set()
        criterion.add(Member.isTsetPLay != 1)
        if args['id']:
            criterion.add(
                MemberAccountChangeRecord.id.in_(args['id'].split(',')))

        if args['isAcdemen'] is not None:
            if args['isAcdemen'] == 1:
                criterion.add(
                    MemberAccountChangeRecord.isAcdemen == args['isAcdemen'])
                if '6' in args['accountChangeType']:
                    args['accountChangeType'].remove('6')
            else:
                criterion.add(
                    or_(MemberAccountChangeRecord.isAcdemen.is_(None),
                        MemberAccountChangeRecord.isAcdemen == 0))
        if args['rechargeid']:
            criterion.add(
                MemberAccountChangeRecord.rechargeid == args['rechargeid'])
        if args['accountChangeType']:
            criterion.add(
                MemberAccountChangeRecord.accountChangeType.in_(
                    args['accountChangeType']))
        if args['timeLower']:
            criterion.add(MemberAccountChangeRecord.time >= args['timeLower'])
        if args['timeUpper']:
            criterion.add(MemberAccountChangeRecord.time <= args['timeUpper'] +
                          SECONDS_PER_DAY)
        # if args['amountUpper']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountUpper'])
        # if args['amountLower']:
        # 	criterion.add(MemberAccountChangeRecord.amount <= args['amountLower'])
        if args['amountUpper'] is not None and args['amountLower'] is not None:
            if args['amountUpper'] >= args['amountLower']:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])
        elif args['amountUpper'] is not None:
            if args['amountUpper'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountUpper'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountUpper'])
        elif args['amountLower'] is not None:
            if args['amountLower'] >= 0:
                criterion.add(
                    MemberAccountChangeRecord.amount >= args['amountLower'])
            else:
                criterion.add(
                    MemberAccountChangeRecord.amount <= args['amountLower'])

        if args['orderId']:
            criterion.add(MemberAccountChangeRecord.orderId == args['orderId'])
        if args['memberUsername']:
            criterion.add(
                Member.username.in_(args['memberUsername'].split(',')))
        if args['memberLevelConfig']:
            criterion.add(
                Member.levelConfig.in_(args['memberLevelConfig'].split(',')))
        # 		if args['memberLevelConfig'] is None:
        # 			criterion.add(Member.levelConfig == '')
        if args['memberParentUsername']:
            parent = Member.query.filter(
                Member.username == args['memberParentUsername']).first()
            if parent:
                criterion.add(Member.parent == parent.id)
        query = db.session.query(
            func.sum(MemberAccountChangeRecord.amount).label('sumAmount'))

        query = query.outerjoin(
            Member, MemberAccountChangeRecord.memberId == Member.id)
        query = query.outerjoin(MemberLevel,
                                Member.levelConfig == MemberLevel.id)
        query = query.outerjoin(User,
                                User.id == MemberAccountChangeRecord.actionUID)
        result_query = []
        if args['accountChangeType']:
            if '6' in args['accountChangeType']:
                query_yule = db.session.query(
                    func.sum(
                        EntertainmentCityBetsDetail.Profit).label('sumAmount'))
                query_yule = query_yule.outerjoin(
                    Member,
                    EntertainmentCityBetsDetail.PlayerName == Member.username)
                query_yule = query_yule.outerjoin(
                    MemberLevel, Member.levelConfig == MemberLevel.id)
                criterion_query = set()
                if args['id']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.id.in_(
                            args['id'].split(',')))
                if args['rechargeid']:
                    criterion_query.add(EntertainmentCityBetsDetail.BillNo ==
                                        args['rechargeid'])
                if args['timeLower']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime >=
                                        args['timeLower'])
                if args['timeUpper']:
                    criterion_query.add(EntertainmentCityBetsDetail.BetTime <=
                                        args['timeUpper'] + SECONDS_PER_DAY)
                # if args['amountLower']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount >= args['amountLower'])
                # if args['amountUpper']:
                # 	criterion_query.add(EntertainmentCityBetsDetail.ValidBetAmount <= args['amountUpper'])
                if args['amountUpper'] is not None and args[
                        'amountLower'] is not None:
                    if args['amountUpper'] >= args['amountLower']:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])
                elif args['amountUpper'] is not None:
                    if args['amountUpper'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountUpper'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountUpper'])
                elif args['amountLower'] is not None:
                    if args['amountLower'] >= 0:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount >=
                            args['amountLower'])
                    else:
                        criterion_query.add(
                            EntertainmentCityBetsDetail.ValidBetAmount <=
                            args['amountLower'])

                if args['orderId']:
                    criterion_query.add(
                        EntertainmentCityBetsDetail.BillNo == args['orderId'])
                if args['memberUsername']:
                    criterion_query.add(
                        Member.username.in_(args['memberUsername'].split(',')))
                if args['memberLevelConfig']:
                    criterion_query.add(
                        Member.levelConfig.in_(
                            args['memberLevelConfig'].split(',')))
                # 				if args['memberLevelConfig'] is None:
                # 					criterion_query.add(Member.levelConfig == '')
                if args['memberParentUsername']:
                    parent = Member.query.filter(
                        Member.username ==
                        args['memberParentUsername']).first()
                    if parent:
                        criterion_query.add(Member.parent == parent.id)
                query = query.filter(*criterion)
                query_yule = query_yule.filter(*criterion_query)
                # union_all 拼接数据
                result = union_all(query, query_yule)

                # 将拼接好的数据重新命名,变成一个新的查询表
                user_alias = aliased(result, name='user_alias')
                user_alias = db.session.query(func.sum(
                    user_alias.c.sumAmount)).all()[0][0]
                return {'success': True, 'data': user_alias}
        user_alias = query.filter(*criterion).all()[0][0]
        return {'success': True, 'data': user_alias}
Пример #27
0
from datetime import datetime
from decimal import Decimal

from flask_restful import Resource, fields, marshal_with
from flask_restful.reqparse import RequestParser
from sqlalchemy import or_, func as sql_func
from sqlalchemy.orm import contains_eager

from cebulany.auth import token_required
from cebulany.models import Transaction, Payment
from cebulany.resources.types import dt_type

transaction_parser = RequestParser()
transaction_parser.add_argument('date_start', type=dt_type)
transaction_parser.add_argument('date_end', type=dt_type)
transaction_parser.add_argument('month')
transaction_parser.add_argument('text')
transaction_parser.add_argument('negative')
transaction_parser.add_argument('positive')
transaction_parser.add_argument('cost_le', type=Decimal)
transaction_parser.add_argument('cost_ge', type=Decimal)
transaction_parser.add_argument('ordering')
transaction_parser.add_argument('member_id', type=int)

member_fields = fields.Nested({
    'id': fields.Integer,
    'name': fields.String,
})

payment_type_fields = fields.Nested({
    'id': fields.Integer,
Пример #28
0
class SourceDetailsAPIView(APIView):
    get_parser = RequestParser()
    get_parser.add_argument('coverage', type=types.boolean, location='args',
                            default=False)

    # this is mostly copy-pasted from ProjectSourceDetails :(

    def get(self, source_id):
        source = Source.query.filter(
            Source.id == source_id,
        ).first()
        if source is None:
            return error("Source not found", http_code=404)

        args = self.get_parser.parse_args()

        context = self.serialize(source)

        diff = source.generate_diff()

        if diff:
            files = self._get_files_from_raw_diff(diff)

            if args.coverage:
                coverage = merged_coverage_data(c for c in get_coverage_by_source_id(source_id)
                                                if c.filename in files)

                coverage_for_added_lines = self._filter_coverage_for_added_lines(diff, coverage)

            tails_info = dict(source.data)
        else:
            coverage = None
            coverage_for_added_lines = None
            tails_info = None

        context['diff'] = diff
        if args.coverage:
            context['coverage'] = coverage
            context['coverageForAddedLines'] = coverage_for_added_lines
        context['tailsInfo'] = tails_info

        return self.respond(context)

    def _filter_coverage_for_added_lines(self, diff, coverage):
        """
        This function takes a diff (text based) and a map of file names to the coverage for those files and
        returns an ordered list of the coverage for each "addition" line in the diff.

        If we don't have coverage for a specific file, we just mark the lines in those files as unknown or 'N'.
        """
        if not diff:
            return None

        diff_lines = diff.splitlines()

        current_file = None
        line_number = None
        coverage_by_added_line = []

        for line in diff_lines:
            if line.startswith('diff'):
                # We're about to start a new file.
                current_file = None
                line_number = None
            elif current_file is None and line_number is None and (line.startswith('+++') or line.startswith('---')):
                # We're starting a new file
                if line.startswith('+++ b/'):
                    line = line.split('\t')[0]
                    current_file = unicode(line[6:])
            elif line.startswith('@@'):
                # Jump to new lines within the file
                line_num_info = line.split('+')[1]
                # Strip off the trailing ' @@' so that when only the line is specified
                # and there is no comma, we can just parse as a number.
                line_num_info = line_num_info.rstrip("@ ")
                line_number = int(line_num_info.split(',')[0]) - 1
            elif current_file is not None and line_number is not None:
                # Iterate through the file.
                if line.startswith('+'):
                    # Make sure we have coverage for this line.  Else just tag it as unknown.
                    cov = 'N'
                    if current_file in coverage:
                        try:
                            cov = coverage[current_file][line_number]
                        except IndexError:
                            logger = logging.getLogger('coverage')
                            logger.info('Missing code coverage for line %d of file %s' % (line_number, current_file))

                    coverage_by_added_line.append(cov)

                if not line.startswith('-'):
                    # Up the line count (assuming we aren't at a remove line)
                    line_number += 1

        return coverage_by_added_line

    def _get_files_from_raw_diff(self, diff):
        """
        Returns a list of filenames from a diff.
        """
        files = set()
        diff_lines = diff.split('\n')
        for line in diff_lines:
            if line.startswith('+++ b/'):
                line = line.split('\t')[0]
                files.add(line[6:])

        return files
Пример #29
0
 def __init__(self):
     self.parser = RequestParser()
Пример #30
0
 def test_parse_lte_gte_missing(self):
     parser = RequestParser()
     parser.add_argument("foo", operators=["<=", "="])
     args = parser.parse_args(Request.from_values("/bubble?foo<=bar"))
     self.assertEquals(args['foo'], "bar")