from flask import Flask
from flask import render_template
from flask import request
from flask import redirect,url_for
from code1.model import Model
import session
import socket
import random
from __init__ import predict,train,evaluate
#获取本机电脑名


app = Flask(__name__)
import user
import couplet

vocab_file = 'code1/data/vocabs'
model_dir = 'code1/output'

m = Model(
        None, None, None, None, vocab_file,
        num_units=1024, layers=4, dropout=0.2,
        batch_size=32, learning_rate=0.0001,
        output_dir=model_dir,
        restore_model=True, init_train=False, init_infer=True)


@app.route("/")
def index():
    return render_template("homepage.html",ip=ip)

@app.route("/homepage",methods=['GET'])
def homepage():
    return render_template("homepage.html",ip=ip)

@app.route("/game1",methods=['GET','post'])
def game1():
    if request.method == 'GET':
        return render_template("game1.html",ip=ip)
    else:
        upper = request.form.get("upper", "")
        input=upper
        lower=m.infer(' '.join(input))
        lower = ''.join(lower.split(' '))
        return render_template("game1_result.html",lower=lower,upper=upper,ip=ip)

@app.route("/judge",methods=['GET','POST'])
def judge():
    result= request.form.get("result", "")
    upper = request.form.get("upper")
    lower = request.form.get("lower")
    u = couplet.Couplet()
    if(int(result)==1):
        u.to_evaluation(up=upper,down=lower)
    else:
        u.to_predict(up=upper,down=lower)
    return render_template("game1_back.html",ip=ip)

@app.route("/game2",methods=['GET','post'])
def game2():
    if request.method == 'GET':
        u = couplet.Couplet()
        pre = u.db_session.query(predict).all()
        up=[]
        for i in pre:
            up.append(i.up)
        up=up[random.randint(0, len(up)-1)]
        return render_template("game2.html",up=up,ip=ip)
    else:
        up = request.form.get("up")
        down= request.form.get("down")
        u = couplet.Couplet()
        u.to_evaluation(up=up,down=down)
        return render_template("game2_back.html",ip=ip)

@app.route("/game3",methods=['GET','post'])
def game3():
    if request.method == 'GET':
        u = couplet.Couplet()
        pre = u.db_session.query(evaluate).all()
        up=[]
        down=[]
        for i in pre:
            up.append(i.up)
            down.append(i.down)
        temp=random.randint(0,len(up)-1)
        up=up[temp]
        down=down[temp]
        return render_template("game3.html",up=up,down=down,ip=ip)
    else:
        result = request.form.get("result", "")
        up = request.form.get("up")
        down= request.form.get("down")
        print(result,up,down)
        if(result=='1'):
            u = couplet.Couplet()
            u.add_popular(up=up, down=down,popular=1)
        else:
            u = couplet.Couplet()
            u.minus_popular(up=up, down=down, popular=1)
        return render_template("game3_back.html",ip=ip)

@app.route("/register", methods=['GET',"POST"])
def register():
    if request.method=='GET':
        return render_template("register.html",ip=ip)
    else:
        user_id = request.form.get("user_id", "")
        password = request.form.get("password", "")
        u = user.Users()
        code, message = u.register(user_id=user_id, password=password)
        if code==200:
            return """<a href="http://{}/login" target="_self">注册成功,点击登陆</a>   """.format(ip)
        else:
            return """<a href="http://{}/register" target="_self">注册失败,点击重新注册</a>   """.format(ip)


@app.route("/login", methods=["GET","POST"])
def login():
    if request.method=='GET':
        return render_template("login.html")
    else:
        user_id = request.form.get("user_id", "")
        password = request.form.get("password", "")
        u = user.Users()
        code, message = u.login(user_id=user_id, password=password)
        if code==200:
            return redirect(url_for('homepage'))
        else:
            return """<a href="http://{}/login" target="_self">用户名或密码错误,点击重新登陆</a>   """.format(ip)

if __name__ == '__main__':
    app.run("127.0.0.1",port=5000)