Пример #1
0
def api():
    uid = _apikeyvalidate(g.db,request.args.get('key', 0))
    if uid == 0:
        abort(404)
    type = request.args.get('t', 0)
    if type == 'A':         #add order
        contract_id = request.args.get('cid', 0,type=int)
        b_s = request.args.get('bs', 0)
        point = request.args.get('pt', 0)
        lots =  request.args.get('lt', 0,type=int)
        res = _add_order(g.db,uid,contract_id,b_s,point,lots,'S')
        return jsonify(res)
    elif type == 'C':       #cancel order
        orderid = request.args.get('oid', 0)
        res = _cancel_order(g.db,uid,orderid)
        return jsonify(res)
    elif type == 'O':       #get orderlist
        res = _update_user(g.db,{'user_id':uid},['orders'])
        return jsonify(res)
    elif type == 'U':       #Update server
        contract_id = request.args.get('cid', 0,type=int)
        _update_contract(g.db,contract_id,'D')
        return jsonify({'category':'suc'})
    else:
        abort(404)
Пример #2
0
def admin():
    if 'email' not in session or session['email'] <> app.config['ADMIN']:
        abort(404)
    if request.method == 'POST':
        if request.form['a_r'] == 'R':
            cur = g.db.cursor()
            cur.execute("UPDATE contract SET status='R' WHERE contract_id=%s",request.form['id'])
            g.db.commit()
            cur.close()
            flash("Reject Contract "+request.form['id']+" Successfully")
        if request.form['a_r'] == 'M':
            cur = g.db.cursor()
            cur.execute("UPDATE contract SET apinstruction=%s WHERE contract_id=%s",(request.form['apinstruction'],request.form['id']))
            g.db.commit()
            cur.close()
            flash("Update Contract "+request.form['id']+" Approval Instruction Successfully")
        elif request.form['a_r'] == 'A':
            cur = g.db.cursor()
            cur.execute("UPDATE contract SET status='P' WHERE contract_id=%s and status='N'",request.form['id'])
            cur.execute("UPDATE contract SET status='Q' WHERE contract_id=%s and status='C'",request.form['id'])
            cur.execute("UPDATE contract c join users u on c.owner = u.user_id SET u.invite = u.invite + 5 WHERE c.contract_id=%s",request.form['id'])
            g.db.commit()
            cur.close()
            flash("Approval Contract "+request.form['id']+" Successfully")
        _update_contract(g.db,request.form['id'],'D')
        return redirect(url_for('admin'))
    cur = g.db.cursor()
    cur.execute("select a.account, a.balance,b.bio from btc_account a left join \
        (select user,sum(amount) as bio from btc_trans where timestamp > NOW() + interval -30 day group by user ) b on a.account = b.user")
    btc_account = [dict(account=orow[0],balance=orow[1],bio=orow[2]) for orow in cur.fetchall()]
    return render_template('admin.html',u = btc_account)
Пример #3
0
def trade():
    if 'user_id' not in session:
        return redirect(url_for('home'))
    if request.method == 'POST':
        #---Add order---
        res = _add_order(g.db,session['user_id'],long(request.form['contract_id']),request.form['b_s'], request.form['point'], request.form['lots'])
        session['bs'] = request.form['b_s']
        flash(res['msg'],res['category'])
        if res['category'] == 'suc':
            if 'Deal' in res['msg']:
                _update_contract(g.db,request.form['contract_id'],'D')
            else:
                _update_contract(g.db,request.form['contract_id'],'C')
        return redirect(url_for('trade',c=request.form['contract_id']))
    else:
        co = request.args.get('co', 0,type=int)
        contract_id = request.args.get('c', 0, type=int)
        if co >= 1:   #Cancel order
            res = _cancel_order(g.db,session['user_id'],co)
            flash(res['msg'],res['category'])
            _update_contract(g.db,contract_id,'C')
            return redirect(url_for('trade',c=contract_id))
        else:
            g.u = _update_user(g.db,session,[])
            if contract_id == 0 and 'latestcont' in session:
                contract_id = session['latestcont']
            return render_template('trade.html',default_cid = contract_id )
Пример #4
0
def eod_process():
    global db, cur, t, gv_contract
    db = _connect_db()
    cur = db.cursor()

    forced_close()
    open_cont()
    close_cont()
    return_fee()
    settle_cont()
    achieve_cont()
    balance2date(datetime.date.today() - datetime.timedelta(1))
    update_feerate()

    _update_contract(db)

    cur.close()
    db.close()

    t = threading.Timer(EOD_INTERVAL, eod_process)
    t.start()
    print >>sys.stderr, time.strftime("%d_%H:%M", time.localtime(time.time())), "EOD Process Finished."
Пример #5
0
def before_first_request():
    g.db  = _connect_db()
    _update_contract(g.db)
    _start_eod_sevice()
    _start_twt_sevice()
Пример #6
0
def account():
    if 'user_id' not in session:
        return redirect(url_for('home'))
    if request.method == 'POST':
        type = request.args.get('t', 0)
        if type == 'P':         #reset password
            if _loginuser(g.db,session['email'],request.form['opassword']):
                _update_pass(g.db,session['email'],request.form['password'])
                msg = dict(msg = 'Password Changed Successfully.',type ='suc')
            else:
                msg = dict(msg='Orignal Password Not Match.',type = 'err')
            return jsonify(msg)
        elif type == 'Q':       #reset capital password
            if _vali_cpass(g.db,session['email'],request.form['opassword']):
                _update_cpass(g.db,session['email'],request.form['password'])
                if request.form['opassword'] == "not set yet":
                    flash('Capital Password Set Successfully.','suc')
                    return jsonify({'goto':url_for("account",tab=3)})
                msg = dict(msg = 'Capital Password Changed Successfully.',type ='suc')
            else:
                msg = dict(msg='Orignal Capital Password Not Match.',type = 'err')
            return jsonify(msg)
        elif type == 'E':       #resend email
            _send_mail(session['email'],render_template("email/activate.html",para={'user': session['email'].split('@')[0].upper(),
                            'url':url_for('register',v=_activecode(g.db,session['email']))}))
            #_send_mail(session['email'],'activate',{'url':request.url_root+url_for('register',v=_activecode(g.db,session['email']))})
            msg = dict(msg='Validate Email sent successfully',type = 'suc')
            return jsonify(msg)
        elif type == 'I':       #invite email
            if not validateEmail(request.form['email']):
                flash('Not validate Email','err')
            elif _change_invitenum(g.db,session['user_id'],-1):

                _send_mail(request.form['email'],render_template("email/invite.html",para={'user': request.form['email'].split('@')[0].upper(),
                                        'url':url_for('register',r = _enrcode(session['user_id'],request.form['email'])),'refer':session['email'].split('@')[0].upper()}))

                flash('Invite Email Sent.','suc')
                return jsonify({'goto':url_for("account",tab=0)})
            else:
                msg = dict(msg='Not Enough Email Invite.',type = 'err')
                return jsonify(msg)

        elif type in ['C','D','S']:       #new ,modify and settle contract

            cid = long(request.form['id'])
            if cid == 0 or gv_contract[cid]['owner'] == session['email']:
                if type == 'C':
                    msg,cid = _modify_cont(g.db,cid,request.form['code'],request.form['btc_multi'],request.form['opendate'],request.form['opentime'],request.form['settledate'],request.form['settletime'],request.form['leverage'],\
                        request.form['fullname'],session['user_id'],request.form['twitter_id'],request.form['write_fee'],request.form['region'],request.form['sector'],request.form['description'],request.form['movelimit'])
                elif type == 'D':   #delete
                    msg = _delete_cont(g.db,cid)
                elif type == 'S':   #settle
                    msg = _settle_cont(g.db,cid,request.form['settlepoint'],request.form['settleproof'])

            else:
                msg = dict(msg='Contract Owner Not Match.',type = 'err')
            if msg['type'] == 'suc':
                flash(msg['msg'],msg['type'])
                _update_contract(g.db,cid,'D')
                return jsonify({'goto':url_for("account",tab=2)})
            else:
                return jsonify(msg)

    g.u=_update_user(g.db,session,['positions','info','rtvol','log'])
    tab = request.args.get('tab', 0)
    return render_template('account.html',tab=tab)