from flask import Flask, render_template, redirect
from flask_wtf import FlaskForm
from wtforms import SelectField, SubmitField
import os
from glob import glob
from my_db import SQLiteDB
import socket

app = Flask(__name__)


def get_local_ip():
    try:
        # 获取本机主机名
        host_name = socket.gethostname()
        # 通过主机名获取本机IP地址
        local_ip = socket.gethostbyname(host_name)
        return local_ip
    except socket.error:
        return "无法获取本地IP地址"


app.config['SECRET_KEY'] = 'aaa'


def get_all_excel_files(directory):
    # 获取指定目录及其子目录下的所有Excel文件
    return glob(os.path.join(directory, '**', '*.xlsx'), recursive=True)


def get_choices():
    db_path = './uploads/example.db'
    db = SQLiteDB(db_path)
    # excel_files = get_all_excel_files('./uploads/')
    # for file in excel_files:
    #     print(file)
    #     if '市场局规则判定统计' in file:
    #         print(file)
    #         __c = file.split('\\')[-1]
    #         choices_data.append((__c, __c))
    # print(choices_data)
    choices_data = [(a, str(a).replace('tb','')) for i, a, *_ in db.query('sqlite_master', condition='type=="table"')]
    db.close()
    return choices_data


class DropdownForm(FlaskForm):
    choices_data = get_choices()
    print(choices_data)
    dropdown1 = SelectField('文件1', choices=choices_data)
    dropdown2 = SelectField('文件2', choices=choices_data)
    submit = SubmitField('提交')


@app.route('/', methods=['GET', 'POST'])
def index():
    form = DropdownForm()
    if form.validate_on_submit():
        selected1 = form.dropdown1.data
        selected2 = form.dropdown2.data

        return redirect(
            "http://{ip}:5000/webview2/?filename1={filename1}&filename2={filename2}".format(ip=get_local_ip(),
                                                                                            filename1=selected1,
                                                                                            filename2=selected2))

    return render_template('file_diff.html', form=form)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=1234, debug=True)