Ejemplo n.º 1
0
def app_rebuild():
    """To regenerate the secret"""
    uapp = Application.query.filter_by(id=g.form.id.data,
                                       user_id=g.user.id).first()
    if not uapp:
        return return_result(20005)
    secret = generate_appkey()
    uapp.secret = secret
    return return_result(result=dict(secret=secret))
Ejemplo n.º 2
0
def app_add():
    uapp_max_count=current_app.config['UAPP_MAX_COUNT']
    if g.user.app.count() >= uapp_max_count:
        return return_result(10016, reason='用户可新建的应用数已达最大值({})'.format(uapp_max_count))

    uapp = Application(user_id=g.user.id, appkey=generate_appkey(), secret=generate_appkey(), **g.form.data)
    db.session.add(uapp)
    db.session.commit()
    return return_result(result={'id': uapp.id, 'appkey': uapp.appkey, 'secret': uapp.secret})
Ejemplo n.º 3
0
def app_edit():
    """To regenerate the secret"""

    uapp=Application.query.filter_by(id=g.form.id.data, user_id=g.user.id).first()
    if not uapp:
        return return_result(20005)
    uapp.appdes=g.form.appdes.data
    db.session.commit()
    return return_result()
Ejemplo n.º 4
0
def app_edit():
    """重新生成secret"""
    user_id = request.json.get('user_id')  # 登录用户
    _id = request.json.get('id')

    secret = generate_appkey()

    uapp = Application.query.get(_id)
    print(type(uapp.user_id), type(user_id))
    if str(uapp.user_id) != user_id:
        return return_result(10013)
    uapp.secret = secret
    return return_result(result=dict(secret=secret))
Ejemplo n.º 5
0
def app_list(page, num):
    uapps = g.user.app.order_by(Application.create_timed.desc()).paginate(
        page, num, error_out=False)
    records = apps_schema.dump(uapps.items).data
    records = add_timestamp(records)
    return return_result(
        result=dict(total=uapps.total, pages=uapps.pages, records=records))
Ejemplo n.º 6
0
 def inner(*args, **kwargs):
     # The method for wrap_formdata of the FlaskForm class
     # implements the values from request.form and json.
     form = form_class()
     if not form.validate():
         return return_result(errcode=20100, result=form.errors)
     g.form = form
     return f(*args, **kwargs)
Ejemplo n.º 7
0
def gets():
    appkey = g.appkey
    ids = g.form.ids.data
    query = Content.query.filter(Content.appkey == appkey,
                                 Content.enabled == True)
    if ids:
        query = query.filter(Content.id.in_(ids))
    contents = query.all()
    records = contents_schema.dump(contents).data
    records = add_timestamp(records)
    return return_result(result=records)
Ejemplo n.º 8
0
def claim_account():
    """Multiple resource statistics"""
    appkey = g.appkey
    claim_ids = g.form.claim_ids.data
    query = Consume.query.with_entities(
        Consume.claim_id,
        db.func.sum(Consume.price).label('sum'),
        db.func.count(
            Consume.price).label('count')).filter(Consume.appkey == appkey)
    if claim_ids:
        query = query.group_by(Consume.claim_id).having(
            Consume.claim_id.in_(claim_ids))
    records = query.all()
    return return_result(result=records)
Ejemplo n.º 9
0
def claim_id_consume(page, num):
    """All relevant consumption records of a resource"""
    appkey = g.appkey
    claim_id = g.form.claim_id.data

    query = Consume.query.filter_by(appkey=appkey, claim_id=claim_id)
    consumes = query.order_by(Consume.create_timed.desc()).paginate(
        page, num, error_out=False)
    total = consumes.total
    pages = consumes.pages
    records = consumes_schema.dump(consumes.items).data
    records = add_timestamp(records)
    return return_result(
        result=dict(total=total, pages=pages, records=records))
Ejemplo n.º 10
0
def published(page, num):
    """List of published resources"""
    appkey = g.appkey
    author = g.form.author.data
    contents = Content.query.filter_by(author=author,
                                       appkey=appkey,
                                       enabled=True).paginate(page,
                                                              num,
                                                              error_out=False)
    total = contents.total
    pages = contents.pages
    records = contents_schema.dump(contents.items).data
    records = add_timestamp(records)
    return return_result(
        result=dict(total=total, pages=pages, records=records))
Ejemplo n.º 11
0
def content_list(page, num):
    """因为price使用了Numeric类型, 在转换为python对象时,对应 Decimal 类型
    Decimal类型,在使用jsonify进行json转换时会发生异常, 这是因为标准库json不支持转换Decimal

    解决办法: 安装simplejson, 此库的dumps有一个use_decimal参数(默认True,可以转换Decimal)
    当你安装了simplejson, flask的jsonify会自动使用它,而放弃系统标准库中的json库
    ref: https://github.com/pallets/flask/issues/835
    """
    appkey = g.appkey
    contents = Content.query.filter(
        Content.appkey == appkey, Content.enabled == True).order_by(
            Content.create_timed.desc()).paginate(page, num, error_out=False)
    total = contents.total
    pages = contents.pages
    result = contents_schema.dump(contents.items).data
    return return_result(result=dict(total=total, pages=pages, data=result))
Ejemplo n.º 12
0
def app_add():
    user_id = request.json.get('user_id')
    appname = request.json.get('appname')
    apptype_id = request.json.get('apptype_id')
    appdes = request.json.get('appdes')
    appkey = generate_appkey()
    secret = generate_appkey()

    uapp = Application(user_id=user_id,
                       appname=appname,
                       apptype_id=apptype_id,
                       appdes=appdes,
                       appkey=appkey,
                       secret=secret)
    db.session.add(uapp)
    db.session.commit()
    return return_result(result={
        'id': uapp.id,
        'appkey': uapp.appkey,
        'secret': uapp.secret
    })
Ejemplo n.º 13
0
def published(page, num):
    """作者已发布资源被消费记录"""
    appkey = g.appkey
    author = request.json.get('author')
    category = request.json.get('category')  # 0: 资源收入 1: 广告支出 其他:all

    query = Content.query.with_entities(Content.id, Content.title, Consume.txid, Content.enabled,
                                        Content.claim_id, Consume.customer,Consume.price, Consume.create_timed). \
                        join(Consume,Content.claim_id==Consume.claim_id). \
                        filter(Content.appkey == appkey, Content.author==author)
    if category == 0:
        query = query.filter(Consume.price > 0)
    if category == 1:
        query = query.filter(Consume.price < 0)

    records = query.order_by(Consume.create_timed.desc()).paginate(
        page, num, error_out=False)
    total = records.total
    pages = records.pages
    result = content_publishs_schema.dump(records.items).data
    return return_result(result=dict(total=total, pages=pages, data=result))
Ejemplo n.º 14
0
def consumed(page, num):
    """用户已消费的资源记录"""
    appkey = g.appkey
    customer = request.json.get('customer')
    category = request.json.get('category')  # 0: 消费支出 1: 广告收入 其他:all
    query = Content.query.with_entities(Content.id, Content.author, Content.title, Consume.txid, Content.enabled,
                                        Content.claim_id, Consume.price, Consume.create_timed). \
                        join(Consume,Content.claim_id==Consume.claim_id). \
                        filter(Content.appkey == appkey, Consume.customer == customer)
    if category == 0:
        query = query.filter(Consume.price > 0)
    if category == 1:
        query = query.filter(Consume.price < 0)

    records = query.order_by(Consume.create_timed.desc()).paginate(
        page, num, error_out=False)
    total = records.total
    pages = records.pages
    records = content_consumes_schema.dump(records.items).data
    return return_result(
        result=dict(total=total, pages=pages, records=records))
Ejemplo n.º 15
0
def published(page, num):
    """作者已发布资源被消费记录"""
    appkey = g.appkey
    author = g.form.author.data
    category = g.form.category.data  # 0: Publish income 1: Advertising spending other:all

    query = Content.query.with_entities(Content.id, Content.title, Consume.txid, Content.enabled,
                                        Content.claim_id, Consume.customer,Consume.price, Consume.create_timed). \
                        join(Consume,Content.claim_id==Consume.claim_id). \
                        filter(Content.appkey == appkey, Content.author==author)
    if category == 0:
        query = query.filter(Consume.price > 0)
    if category == 1:
        query = query.filter(Consume.price < 0)

    records = query.order_by(Consume.create_timed.desc()).paginate(
        page, num, error_out=False)
    total = records.total
    pages = records.pages
    records = add_timestamp(records.items)
    return return_result(
        result=dict(total=total, pages=pages, records=records))
Ejemplo n.º 16
0
def consumed(page, num):
    """用户已消费的资源记录"""
    appkey = g.appkey
    customer = request.json.get('customer')
    category = request.json.get('category')  # 0: 消费支出 1: 广告收入 其他:all
    query = Content.query.with_entities(Content.id, Content.author, Content.title, Consume.txid, Content.enabled,
                                        Content.claim_id, Consume.price,
                                        Consume.create_timed). \
                        join(Consume,Content.claim_id==Consume.claim_id). \
                        filter(Content.appkey == appkey, Consume.customer == customer)
    if category == 0:
        query = query.filter(Consume.price > 0)
    if category == 1:
        query = query.filter(Consume.price < 0)

    records = query.order_by(Consume.create_timed.desc()).paginate(
        page, num, error_out=False)
    total = records.total
    pages = records.pages
    # 联表查询的结果是sqlalchemy.util._collections.result对象, 不是一个model对象
    # 所以不能够想content_list接口那样格式化数据
    records = add_timestamp(records.items)
    return return_result(
        result=dict(total=total, pages=pages, records=records))
Ejemplo n.º 17
0
def app_remove():
    _id = request.json.get('id')
    num = Application.query.filter_by(id=_id).delete()
    return return_result(result=dict(num=num))
Ejemplo n.º 18
0
def app_list():
    user_id = request.json.get('user_id')  # 正式场景, 可能不需要传参,直接从登录状态中获得
    user = User.query.filter_by(id=user_id).first()
    uapps = user.app.all()
    result = apps_schema.dump(uapps).data
    return return_result(result=result)
Ejemplo n.º 19
0
def view():
    """浏览量+1"""
    _id = request.json.get('id')
    num = Content.query.filter_by(id=_id).update(
        {Content.views: Content.views + 1})
    return return_result(result=dict(num=num))
Ejemplo n.º 20
0
def purchase():
    """资源购买量"""
    appkey = g.appkey
    claim_id = g.form.claim_id.data
    count = Consume.query.filter_by(claim_id=claim_id, appkey=appkey).count()
    return return_result(result=dict(count=count))
Ejemplo n.º 21
0
def app_remove():
    num = Application.query.filter_by(id=g.form.id.data,
                                      user_id=g.user.id).delete()
    return return_result(result=dict(num=num))
Ejemplo n.º 22
0
def purchase():
    """资源购买量"""
    appkey = g.appkey
    claim_id = request.json.get('claim_id')
    count = Consume.query.filter_by(claim_id=claim_id, appkey=appkey).count()
    return return_result(result=dict(count=count))