import sys
import os
import threading
import time
import logging
from flask import Flask, request, redirect, url_for, render_template, flash
from flask_login import LoginManager, login_user, logout_user, current_user, login_required
from router.models import User, query_user
from flask_script import Manager, Server
from router.module import module_bp

# log = logging.getLogger('werkzeug')
# log.setLevel(logging.ERROR)

app = Flask(__name__)
app.config["TEMPLATES_AUTO_RELOAD"] = True
app.config['JSON_SORT_KEYS'] = False
app.secret_key = '1234567'

# manager = Manager(app)
# manager.add_command('runserver', Server(host='0.0.0.0', port=5000, use_debugger=False))
# # manager.option('-r', '-d')

app.register_blueprint(module_bp)

login_manager = LoginManager()
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'
login_manager.login_message = ''
login_manager.init_app(app)

#################################################
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user_id = request.form.get('userid')
        user = query_user(user_id)
        if user is not None and request.form['password'] == user['password']:

            curr_user = User()
            curr_user.id = user_id

            # 通过Flask-Login的login_user方法登录用户
            login_user(curr_user)

            return redirect(url_for('module.dashboard'))

        flash('无效的用户名或密码!')
    # GET 请求
    return render_template('login.html', title="登录系统")


@app.route('/logout')
@login_required
def logout():
    logout_user()
    # return 'Logged out successfully!'
    return render_template('login.html' , title="登录系统")


@login_manager.user_loader
def load_user(user_id):
    if query_user(user_id) is not None:
        curr_user = User()
        curr_user.id = user_id
        return curr_user
        
# def start_browser(tname, delay):
#     # print('start: ' + tname)
#     time.sleep(delay)
#     # os.system('start_gui.bat')
#     os.system("..\\GoogleChromePortable\\App\\Chrome-bin\\chrome.exe --disable-extensions --app=http://127.0.0.1:5000")

def start_server(tname, delay):
    # print('start: ' + tname)
    time.sleep(delay)
    # sys.argv.append('runserver')
    # manager.run()
    # app.run(host='127.0.0.1', port=5000, debug=False)
    app.run(host='0.0.0.0', port=5000, debug=False)

if __name__ == '__main__':
    try:
        # t1 = threading.Thread(target=start_browser, args=('t1_browser', 3,))
        t2 = threading.Thread(target=start_server, args=('t2_server', 1,))
        # t1.start()
        t2.start()
    except:
        print("Error: unable to start thread")