Ejemplo n.º 1
0
def reg():
    """注册用户,返回appkey"""
    # 验证请求参数
    # args = self.reqparse.parse_args()
    username = request.json.get('username')
    password = request.json.get('password')
    email = request.json.get('email')
    telphone = request.json.get('telphone')
    role_id = request.json.get('role_id')
    # 与db存储相同的加密方式, 作为开发者钱包的支付密码
    pay_password = generate_password_hash(password)
    print(pay_password)
    # 注册前, 先创建钱包
    server = get_jsonrpc_server()
    try:
        result=server.create(username, pay_password)
        if result.get('success') is not True:
            print(result)
            return return_result(20205)
    except Exception as e:
        print (e)
        return return_result(20205)

    user = User(username=username, email=email, telphone=telphone, role_id=role_id, password_hash=pay_password)
    db.session.add(user)
    db.session.commit()
    return return_result(result=dict(id=user.id))
Ejemplo n.º 2
0
def reg():
    """User register"""
    form = g.form

    # The user login password is also the wallet's payment password.
    password = rsahelper.decrypt(form.password.data).decode('u8')
    pay_password = generate_password_hash(password)
    form.password.data = pay_password

    try:
        server = get_jsonrpc_server()
        # print(form.username.data, pay_password)
        result = server.create(form.username.data, pay_password)
        if result.get('success') is not True:
            print(result)
            return return_result(20205, result=result)
    except Exception as e:
        print(e)
        return return_result(20205)

    role = Role.query.filter_by(name='normal').first()
    user = User(**form.data)
    user.role_id = role.id
    db.session.add(user)
    db.session.commit()
    return return_result(result=dict(id=user.id))
Ejemplo n.º 3
0
def pay_to_user():
    """The user account transfer

    Args:
        is_developer:Is it a developer
    """
    is_developer = request.json.get('is_developer')
    if is_developer is True:
        send_user_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        send_user_wallet = get_wallet_name(request.json.get('send_user'))
        pay_password = request.json.get('pay_password')

    recv_wallet_username = get_wallet_name(request.json.get('recv_user'))
    amount = request.json.get('amount')

    try:
        server = get_jsonrpc_server()
        result = server.pay(send_user_wallet, pay_password, recv_wallet_username, amount)
        print(result)
        if result.get('success') is not True:
            print(result)
            return return_result(20206, result=result)
    except Exception as e:
        print(e)
        return return_result(20206, result=dict(wallet_reason=str(e)))
    return return_result()
Ejemplo n.º 4
0
def balance():
    """Check balances"""
    is_developer = g.form.is_developer.data
    if is_developer:
        username_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        username_wallet = g.form.username.data
        pay_password = g.form.pay_password.data

    try:
        server = get_jsonrpc_server()
        result = server.getbalance(username_wallet, pay_password)
        if result.get('errcode') != 0:
            return result
    except:
        app.logger.error(formatter_error(traceback.format_exc()))
        return return_result(20203)
    result = result.get('result')
    confirmed = result.get('confirmed', '0')
    unconfirmed = result.get('unconfirmed', '0')
    unmatured = result.get('unmatured', '0')
    total = result.get('total', '0')
    return return_result(result=dict(total=total,
                                     confirmed=confirmed,
                                     unconfirmed=unconfirmed,
                                     unmatured=unmatured))
Ejemplo n.º 5
0
def pay_to_user():
    """The user account transfer

    Args:
        is_developer:Is it a developer
    """
    is_developer = g.form.is_developer.data
    if is_developer is True:
        send_user_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        send_user_wallet = g.form.send_user.data
        pay_password = g.form.pay_password.data

    recv_wallet_username = g.form.recv_user.data
    amount = g.form.amount.data

    try:
        server = get_jsonrpc_server()
        result = server.pay(send_user_wallet, pay_password,
                            recv_wallet_username, amount)
        print(result)
        if result.get('success') is not True:
            print(result)
            return return_result(20206, result=result)
    except Exception as e:
        print(e)
        return return_result(20206, result=dict(wallet_reason=str(e)))
    return return_result()
Ejemplo n.º 6
0
def balance():
    """Check balances"""
    is_developer = request.json.get('is_developer')
    if is_developer:
        username_wallet = g.user.username
        pay_password=g.user.password_hash
    else:
        username_wallet = get_wallet_name(request.json.get('username'))
        pay_password = request.json.get('pay_password')


    try:
        server = get_jsonrpc_server()
        result = server.getbalance(username_wallet, pay_password)
        if result.get('success') is not True:
            print(result)
            return return_result(20203, result=result)
    except Exception as e:
        print(e)
        return return_result(20203, result=dict(wallet_reason=str(e)))
    result=result.get('result')
    confirmed = result.get('confirmed', '0')
    unconfirmed = result.get('unconfirmed', '0')
    unmatured = result.get('unmatured', '0')
    total = result.get('total', '0')
    return return_result(result=dict(total=total, confirmed=confirmed, unconfirmed=unconfirmed, unmatured=unmatured))
Ejemplo n.º 7
0
def edit_user_role():
    """The administrator changes the developer account role."""
    user = User.query.get(g.form.id.data)
    if not user:
        return return_result(20003)
    user.role_id = g.form.role_id.data
    return return_result()
Ejemplo n.º 8
0
def balance():
    """Check balances"""
    is_developer = g.form.is_developer.data
    if is_developer:
        username_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        username_wallet = g.form.username.data
        pay_password = g.form.pay_password.data

    try:
        server = get_jsonrpc_server()
        result = server.getbalance(username_wallet, pay_password)
        if result.get('errcode') != 0:
            return result
    except Exception as e:
        app.logger.error('remote_addr<{}> - {}'.format(request.remote_addr,
                                                       str(e)))
        return return_result(20203)
    result = result.get('result')
    confirmed = result.get('confirmed', '0')
    unconfirmed = result.get('unconfirmed', '0')
    unmatured = result.get('unmatured', '0')
    total = result.get('total', '0')
    return return_result(result=dict(total=total,
                                     confirmed=confirmed,
                                     unconfirmed=unconfirmed,
                                     unmatured=unmatured))
Ejemplo n.º 9
0
def pay_to_user():
    """The user account transfer

    Args:
        is_developer:Is it a developer
    """
    is_developer = g.form.is_developer.data
    if is_developer is True:
        send_user_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        send_user_wallet = g.form.send_user.data
        pay_password = g.form.pay_password.data

    recv_wallet_username = g.form.recv_user.data
    amount = g.form.amount.data

    try:
        server = get_jsonrpc_server()
        result = server.pay(send_user_wallet, pay_password,
                            recv_wallet_username, amount)
        if result.get('errcode') != 0:
            return result
    except Exception as e:
        app.logger.error('remote_addr<{}> - {}'.format(request.remote_addr,
                                                       str(e)))
        return return_result(20206)
    return return_result()
Ejemplo n.º 10
0
def pay_to_user():
    """The user account transfer

    Args:
        is_developer:Is it a developer
    """
    is_developer = g.form.is_developer.data
    if is_developer is True:
        send_user_wallet = g.user.username
        pay_password = g.user.password_hash
    else:
        send_user_wallet = g.form.send_user.data
        pay_password = g.form.pay_password.data

    recv_wallet_username = g.form.recv_user.data
    amount = g.form.amount.data

    try:
        server = get_jsonrpc_server()
        result = server.pay(send_user_wallet, pay_password,
                            recv_wallet_username, amount)
        if result.get('errcode') != 0:
            return result
    except:
        app.logger.error(formatter_error(traceback.format_exc()))
        return return_result(20206)
    return return_result()
Ejemplo n.º 11
0
def login():
    username = g.form.username.data
    password = g.form.password.data
    user = User.query.filter_by(username=username).first()
    if user is None:
        return return_result(20003)

    if not user.check_password(password):
        return return_result(20004)

    token = user.generate_auth_token(expiration=app.config['EXPIRATION'])
    return return_result(result=dict(token=token))
Ejemplo n.º 12
0
def publish():
    """Release resources

    Args:
        status: 1:add, 2:update, 3:delete(enabled=False)
    """
    data = copy.deepcopy(g.form.data)
    data['appkey'] = g.appkey
    username_wallet = get_wallet_name(data['author'])
    pay_password = data.pop('pay_password')
    data['currency'] = app.config['PUBLISH_CURRENCY']
    data['bid'] = app.config['PUBLISH_BID']
    data['claim_name'] = generate_appkey()

    metadata = dict(title=data['title'],
                    author=data['author'],
                    tag=data['tags'],
                    description=data['des'],
                    language=data['language'] or 'en',
                    license=data['license'],
                    licenseUrl=data['license_url'],
                    nsfw=False,
                    preview=data['preview'],
                    thumbnail=data['thumbnail'])
    try:
        server = get_jsonrpc_server()
        result = server.publish(username_wallet, pay_password,
                                data['claim_name'], metadata,
                                data['content_type'], data['udfs_hash'],
                                data['currency'], data['price'], data['bid'],
                                None, None, True)
        if result.get('errcode') != 0:
            return result
    except:
        app.logger.error(formatter_error(traceback.format_exc()))
        return return_result(20201)
    result = result.get('result')
    data['fee'] = float(result.get('fee', 0))
    data['claim_id'] = result.get('claim_id')
    data['txid'] = result.get('txid')
    data['nout'] = int(result.get('nout', 0))
    if len(data['txid']) != 64:
        return return_result(20201, result=result)
    data['status'] = 1
    data['tags'] = save_tag(data['tags'])
    content = Content(**data)
    db.session.add(content)
    data.pop('tags')
    history = ContentHistory(**data)
    db.session.add(history)
    db.session.commit()
    return return_result(result=dict(id=content.id, claim_id=content.claim_id))
Ejemplo n.º 13
0
def login():
    """ 获取appkey, 可以把appkey信息写入redis,作为查询 """
    username = request.json.get('username')
    password = request.json.get('password')

    user = User.query.filter_by(username=username).first()
    if user is None:
        return return_result(20003)

    if not user.check_password(password):
        return return_result(20004)

    return return_result(reason='success', result=dict(token='token'))
Ejemplo n.º 14
0
def consume():
    appkey = g.appkey
    customer = request.json.get('username')
    wallet_username = get_wallet_name(customer)
    claim_id = request.json.get('claim_id')
    # 正常消费传值
    customer_pay_password = request.json.get('customer_pay_password')
    # 广告点击传值
    author_pay_password = request.json.get('author_pay_password')

    content = Content.query.filter_by(claim_id=claim_id, appkey=appkey).first()
    if not content:
        return return_result(20007)
    price = content.price
    if content.author != customer and content.price != 0:  # 非免费资源(收费资源/广告)
        consume = Consume.query.filter_by(claim_id=claim_id,
                                          customer=customer,
                                          appkey=appkey).first()
        if not consume:
            server = get_jsonrpc_server()
            try:
                if price >= 0:  # 普通消费
                    result = server.consume(wallet_username, claim_id,
                                            customer_pay_password)
                else:  # 广告
                    send_wallet_username = get_wallet_name(content.author)
                    recv_wallet_username = get_wallet_name(customer)
                    abs_price = abs(
                        float(price))  # decimal 类型 会是这样 0.030000, 要去掉后面的0
                    print(send_wallet_username, author_pay_password,
                          recv_wallet_username, abs_price)
                    result = server.pay(send_wallet_username,
                                        author_pay_password,
                                        recv_wallet_username, abs_price)
                if result.get('success') is not True:
                    print(result)
                    return return_result(20202, result=result)
            except Exception as e:
                print(e)
                return return_result(20202, result=dict(wallet_reason=str(e)))

            txid = result.get('txid')
            print(result)
            c = Consume(txid=txid,
                        claim_id=claim_id,
                        customer=customer,
                        appkey=appkey,
                        price=price)
            db.session.add(c)

    return return_result(result=dict(ipfs_hash=content.ipfs_hash))
Ejemplo n.º 15
0
    def decorator(*args, **kwargs):
        username = request.json.get('username')
        password = request.json.get('password')
        if not username or not password:
            return return_result(10011)

        user = User.query.filter_by(username=username).first()
        if user is None:
            return return_result(10011)

        if not user.verify_password(password):
            return return_result(10011)

        return f(*args, **kwargs)
Ejemplo n.º 16
0
    def decorator(*args, **kwargs):
        appkey = request.headers.get('U-AppKey')
        curtime = request.headers.get('U-CurTime')
        sign = request.headers.get('U-Sign')
        if not appkey:
            return return_result(10012)

        # insert to redis
        uapp = Application.query.filter_by(appkey=appkey).first()
        if not uapp:
            return return_result(10001)
        user = uapp.user
        secret = uapp.secret
        if user.role.name == 'blocked':
            return return_result(20006)

        # Verify digital signature
        if not curtime:
            return return_result(10017)
        else:
            if not curtime.isdigit():
                return return_result(20100)
            if time.time() - int(curtime) > current_app.config['SIGN_EXPIRES']:
                return return_result(10017)
        if not sign:
            return return_result(10013)
        if not verify_sign(appkey, secret, curtime, sign):
            return return_result(20102)

        g.user = user
        g.appkey = appkey
        return f(*args, **kwargs)
Ejemplo n.º 17
0
def consume():
    appkey = g.appkey
    customer = request.json.get('username')
    wallet_username = get_wallet_name(customer)
    claim_id = request.json.get('claim_id')
    # Normal resource consumption
    customer_pay_password = request.json.get('customer_pay_password')
    # Ad click
    author_pay_password = request.json.get('author_pay_password')

    content = Content.query.filter_by(claim_id=claim_id, appkey=appkey).first()
    if not content:
        return return_result(20007)
    price = content.price
    if content.author != customer and content.price != 0:  # Non-free resources
        consume = Consume.query.filter_by(claim_id=claim_id,
                                          customer=customer,
                                          appkey=appkey).first()
        if not consume:
            try:
                server = get_jsonrpc_server()
                if price >= 0:  # Normal
                    result = server.consume(wallet_username,
                                            customer_pay_password, claim_id)
                else:  # Ad
                    send_wallet_username = get_wallet_name(content.author)
                    recv_wallet_username = get_wallet_name(customer)
                    abs_price = abs(float(price))  # decimal to float
                    # print(send_wallet_username, author_pay_password, recv_wallet_username, abs_price)
                    result = server.pay(send_wallet_username,
                                        author_pay_password,
                                        recv_wallet_username, abs_price)
                if result.get('success') is not True:
                    print(result)
                    return return_result(20202, result=result)
            except Exception as e:
                print(e)
                return return_result(20202, result=dict(wallet_reason=str(e)))
            # print(result)
            result = result.get('result')
            txid = result.get('txid')
            c = Consume(txid=txid,
                        claim_id=claim_id,
                        customer=customer,
                        appkey=appkey,
                        price=price)
            db.session.add(c)

    return return_result(result=dict(udfs_hash=content.udfs_hash))
Ejemplo n.º 18
0
def delete():
    """Update published resources

    Args:
        status: 1:add, 2:update, 3:delete(DB: enabled=False; CHAIN:metadata['nsfw']=True)
    """

    content = Content.query.filter_by(id=g.form.id.data,
                                      appkey=g.appkey,
                                      enabled=True).first()
    if not content:
        return return_result(20007)

    metadata = dict(title=content.title,
                    author=content.author,
                    tag=[tag.name for tag in content.tags],
                    description=content.des,
                    language=content.language or 'en',
                    license=content.license,
                    licenseUrl=content.license_url,
                    nsfw=True,
                    preview=content.preview,
                    thumbnail=content.preview)
    try:
        server = get_jsonrpc_server()
        result = server.update_claim(
            get_wallet_name(content.author), g.form.pay_password.data,
            content.claim_name, content.claim_id, content.txid, content.nout,
            metadata, content.content_type, content.udfs_hash,
            content.currency, content.price, content.bid, None, None)
        if result.get('errcode') != 0:
            return result
    except:
        app.logger.error(formatter_error(traceback.format_exc()))
        return return_result(20208)

    result = result.get('result')
    content.txid = result.get('txid')
    content.nout = int(result.get('nout', 0))
    content.fee = float(result.get('fee', 0))
    content.status = 3
    content.enabled = False

    data = contenthistory_schema.dump(content).data
    data['appkey'] = g.appkey
    history = ContentHistory(**data)
    db.session.add(history)
    db.session.commit()
    return return_result(result=dict(num=1))
Ejemplo n.º 19
0
def role_edit():
    id = request.json.get('id')
    name = request.json.get('name')
    des = request.json.get('des')

    role = Role.query.get(id)
    if not role:
        return return_result(errcode=20005)

    if name is not None:
        role.name = name
    if des is not None:
        role.des = des
    db.session.add(role)
    return return_result()
Ejemplo n.º 20
0
    def decorator(*args, **kwargs):
        appkey = request.headers.get('appkey')
        if not appkey:
            return return_result(10012)
        # 可以换成从redis中获取
        uapp = Application.query.filter_by(appkey=appkey).first()
        if not uapp:
            return return_result(10001)
        user = uapp.user
        if user.role.name == 'blocked':
            return return_result(20006)

        g.user = user
        g.appkey = appkey
        return f(*args, **kwargs)
Ejemplo n.º 21
0
def edit():
    """ 修改密码, 同时更新appkey"""
    username = request.json.get('username')  # 正式环境需要获取已登录用户
    password = request.json.get('password')
    new_password = request.json.get('new_password')

    user = User.query.filter_by(username=username).first()
    if not user:
        return return_result(20003)

    if not user.check_password(password):
        return return_result(20004)

    user.set_password(new_password)
    return return_result(reason='success.')
Ejemplo n.º 22
0
def role_edit():
    id = g.form.id.data
    des = g.form.des.data
    role = Role.query.get(id)
    role.des = des
    db.session.commit()
    return return_result()
Ejemplo n.º 23
0
def account():
    """ 用户收支总额及资源统计"""
    appkey=g.appkey
    username = request.json.get('username')
    # 发布者收入
    publisher_in=Consume.query.with_entities(
                    db.func.sum(Consume.price).label('sum'),db.func.count(Consume.price).label('count')). \
                    join(Content,Content.claim_id == Consume.claim_id). \
                    filter(Content.appkey==appkey,Content.author == username,Consume.price>0).first()
    # 发布者支出
    publisher_out=Consume.query.with_entities(
                    db.func.abs(db.func.sum(Consume.price)).label('sum'),db.func.count(Consume.price).label('count')). \
                    join(Content,Content.claim_id==Consume.claim_id). \
                    filter(Content.appkey==appkey,Content.author==username,Consume.price<0).first()
    # 消费者收入
    customer_in = Consume.query.with_entities(
                    db.func.abs(db.func.sum(Consume.price)).label('sum'),db.func.count(Consume.price).label('count')). \
                    filter(Consume.appkey==appkey, Consume.customer == username,Consume.price<0).first()
    # 消费这支出
    customer_out=Consume.query.with_entities(
                    db.func.sum(Consume.price).label('sum'),db.func.count(Consume.price).label('count')). \
                    filter(Consume.appkey==appkey, Consume.customer==username,Consume.price>0).first()

    return return_result(result=dict(publisher_in=publisher_in, publisher_out=publisher_out,
                                     customer_in=customer_in,customer_out=customer_out))
Ejemplo n.º 24
0
def check():
    """Check whether users pay for resources

    Args:
        username: consumer
        claim_ids: list of claim_id
    Returns:
        None: No resource record
        False: Unpaid
        udfs_hash: Paid, file hash
    """
    appkey = g.appkey
    customer = request.json.get('username')
    claim_ids = request.json.get('claim_ids')

    result = dict(zip(claim_ids, [None for claim_id in claim_ids]))
    contents = Content.query.filter(Content.claim_id.in_(claim_ids), appkey == appkey).all()
    for content in contents:
        result.update({content.claim_id: False})
        if content.author == customer:  # Publisher and consumer are the same person
            result.update({content.claim_id: content.udfs_hash})
        else:
            consume = Consume.query.filter_by(claim_id=content.claim_id, customer=customer, appkey=appkey).first()
            if consume:
                result.update({content.claim_id: content.udfs_hash})
    return return_result(result=result)
Ejemplo n.º 25
0
def account():
    """ Total user income and resource statistics."""
    appkey = g.appkey
    username = g.form.username.data
    # Publisher income
    publisher_in = Consume.query.with_entities(
        db.func.sum(Consume.price).label('sum'),
        db.func.count(Consume.price).label('count')).join(
            Content, Content.claim_id == Consume.claim_id).filter(
                Content.appkey == appkey, Content.author == username,
                Consume.price > 0).first()
    # Publisher expenditure
    publisher_out = Consume.query.with_entities(
        db.func.abs(db.func.sum(Consume.price)).label('sum'),
        db.func.count(Consume.price).label('count')).join(
            Content, Content.claim_id == Consume.claim_id).filter(
                Content.appkey == appkey, Content.author == username,
                Consume.price < 0).first()
    # Consumer income
    customer_in = Consume.query.with_entities(
        db.func.abs(db.func.sum(Consume.price)).label('sum'),
        db.func.count(Consume.price).label('count')).filter(
            Consume.appkey == appkey, Consume.customer == username,
            Consume.price < 0).first()
    # Consumer expenditure
    customer_out = Consume.query.with_entities(
        db.func.sum(Consume.price).label('sum'),
        db.func.count(Consume.price).label('count')).filter(
            Consume.appkey == appkey, Consume.customer == username,
            Consume.price > 0).first()

    return return_result(result=dict(publisher_in=publisher_in,
                                     publisher_out=publisher_out,
                                     customer_in=customer_in,
                                     customer_out=customer_out))
Ejemplo n.º 26
0
def check():
    """检查用户是否付费

    Args:
        username: 消费者
        claim_ids: 资源claim_id列表
    Returns:
        返回值三种状态:
        None: 没有此条资源记录
        False: 未付费
        ipfs_hash: 已付费
    """
    appkey = g.appkey
    customer = request.json.get('username')
    claim_ids = request.json.get('claim_ids')

    result = dict(zip(claim_ids, [None for claim_id in claim_ids]))
    # appkey作为条件,是为了避免查询别的应用的资源
    contents = Content.query.filter(Content.claim_id.in_(claim_ids), appkey == appkey).all()
    for content in contents:
        result.update({content.claim_id: False})
        if content.author == customer:  # # 消费者与发布者是同一人
            result.update({content.claim_id: content.ipfs_hash})
        else:
            consume = Consume.query.filter_by(claim_id=content.claim_id, customer=customer, appkey=appkey).first()
            if consume:
                result.update({content.claim_id: content.ipfs_hash})
    return return_result(result=result)
Ejemplo n.º 27
0
def consume():
    appkey = g.appkey
    customer = g.form.customer.data
    wallet_username = get_wallet_name(customer)
    claim_id = g.form.claim_id.data
    # Normal resource consumption
    customer_pay_password = g.form.customer_pay_password.data
    # Ad click
    author_pay_password = g.form.author_pay_password.data

    content = g.form.content
    price = content.price
    if content.author != customer and content.price != 0:  # Non-free resources
        consume = Consume.query.filter_by(claim_id=claim_id,
                                          customer=customer,
                                          appkey=appkey).first()
        if not consume:
            try:
                server = get_jsonrpc_server()
                if price >= 0:  # Normal
                    result = server.consume(wallet_username,
                                            customer_pay_password, claim_id)
                else:  # Ad
                    send_wallet_username = get_wallet_name(content.author)
                    abs_price = abs(float(price))  # decimal to float
                    result = server.pay(send_wallet_username,
                                        author_pay_password, wallet_username,
                                        abs_price)
                if result.get('errcode') != 0:
                    return result
            except Exception as e:
                app.logger.error('remote_addr<{}> - {}'.format(
                    request.remote_addr, str(e)))
                return return_result(20202)
            app.logger.debug(result)
            result = result.get('result')
            txid = result.get('txid')
            if len(txid) != 64:
                return return_result(20202, result=result)
            c = Consume(txid=txid,
                        claim_id=claim_id,
                        customer=customer,
                        appkey=appkey,
                        price=price)
            db.session.add(c)

    return return_result(result=dict(udfs_hash=content.udfs_hash))
Ejemplo n.º 28
0
def role_list(page, num):
    roles = Role.query.order_by(Role.id.asc()).paginate(page,
                                                        num,
                                                        error_out=False)
    total = roles.total
    pages = roles.pages
    result = roles_schema.dump(roles.items).data
    return return_result(result=dict(total=total, pages=pages, records=result))
Ejemplo n.º 29
0
def role_add():
    """管理员才能调用,需要权限检查"""
    name = request.json.get('name')
    des = request.json.get('des')
    role = Role(name=name, des=des)
    db.session.add(role)
    db.session.commit()  # 先提交,才能取id值
    return return_result(result={'id': role.id})
Ejemplo n.º 30
0
def publish():
    """Release resources"""
    appkey = g.appkey
    author = request.json.get('author', '')
    username_wallet = get_wallet_name(author)
    pay_password = request.json.get('pay_password')

    title = request.json.get('title')
    tags = request.json.get('tag')
    bid = current_app.config['PUBLISH_BID']
    udfs_hash = request.json.get('udfs_hash')
    price = request.json.get('price')
    content_type = request.json.get('content_type')
    currency = 'UT'
    description = request.json.get('description')

    sourcename = generate_appkey()

    metadata = dict(title=title, author=author, tag=['action'],
                    description='', language='en',
                    license='', licenseUrl='', nsfw=False, preview='', thumbnail='', )
    try:
        server = get_jsonrpc_server()
        # print(username_wallet, pay_password, sourcename, bid, metadata, content_type, udfs_hash, currency, price)
        result = server.publish(username_wallet, pay_password, sourcename,metadata,
                                content_type, udfs_hash, currency, price,bid,None,None,True)
        # print(result)
        if result.get('success') is not True:
            print(result)
            return return_result(20201, result=result)
    except Exception as e:
        print(e)
        return return_result(20201, result=dict(wallet_reason=str(e)))
    result=result.get('result')
    claim_id = result.get('claim_id')
    txid = result.get('txid')
    status = 1
    tags = save_tag(tags)
    history = save_content_history(txid=txid, claim_id=claim_id, author=author, appkey=appkey, title=title,
                                   udfs_hash=udfs_hash, price=price, content_type=content_type, currency=currency,
                                   sourcename=sourcename,des=description, status=status)
    content = save_content(claim_id=claim_id, author=author, appkey=appkey, txid=txid, title=title, udfs_hash=udfs_hash,
                           price=price, content_type=content_type, currency=currency, sourcename=sourcename,
                           des=description, status=status, tags=tags)
    db.session.commit()
    return return_result(result=dict(id=content.id, claim_id=claim_id))