TenantDrive/main.py

137 lines
3.3 KiB
Python

import os
import requests
import sqlite3
from flask import g
from flask import Flask, render_template, request, redirect, url_for, session,make_response,send_from_directory,jsonify
from flask.views import MethodView
from werkzeug.routing import BaseConverter
from utils.login import login_quark
from utils.tools import get_cnb_weburl
# 数据库配置
DATABASE = 'database.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row
return db
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()
app = Flask(__name__)
#app = Flask(__name__,template_folder='templates') #修改模板目录
app.jinja_env.auto_reload = True
exlink_info = {
"exlink_id":"1",
"qrlimit":3,
"driver":["quark","wechat"],
"use_limit":0
}
class PhoneConverter(BaseConverter):
# 自定义路由转换器
regex = '1[3-9]\d{9}'
class LiConverter(BaseConverter):
# 自定义to_python转换器
def to_python(self, value):
return value.split("+")
app.url_map.converters["phone"] = PhoneConverter
app.url_map.converters["li"] = LiConverter
@app.route("/", methods=["GET", "POST"])
def index():
#return render_template("index.html")
return render_template('index.html')
# @app.route("/<phone:param>")
# def phone(param):
# return param
# @app.route("/<li:param>")
# def uner_info(param):
# return param
#falsk中重定向
@app.route('/profile/')
def proflie():
if request.args.get('name'):
return '个人中心页面'
else:
# return redirect(url_for('login'))
return redirect(url_for('index'),code=302)
@app.route('/demo2')
def demo2():
resp = make_response('make response测试')
resp.headers['itbaizhan'] = 'Python'
resp.status = '404 not found'
return resp
@app.route('/login',methods=['POST'])
def login():
# 获取POST请求中的JSON数据
data = request.get_json()
token = data.get('token')
if not token:
print('缺少token参数')
return jsonify({"status": False, "message": "缺少token参数"})
status = login_quark(token)
return jsonify({"status": status})
@app.route('/exlink/<string:id>')
def qrlink(id):
info = exlink_info
return info
@app.route('/admin/')
def admin():
return render_template('admin.html')
class Exlink(MethodView):
def get(self):
db = get_db()
cursor = db.cursor()
cursor.execute('SELECT * FROM exlinks')
exlinks = cursor.fetchall()
return jsonify([dict(row) for row in exlinks])
def post(self):
data = request.json
db = get_db()
cursor = db.cursor()
cursor.execute('''
INSERT INTO exlinks (exlink_id, qr_limit, drivers, use_limit)
VALUES (?, ?, ?, ?)
''', (
data.get('exlink_id'),
data.get('qr_limit', 3),
data.get('drivers', '["quark","wechat"]'),
data.get('use_limit', 0)
))
db.commit()
return jsonify({"status": True, "message": "success"})
app.add_url_rule('/admin/exlink', view_func=Exlink.as_view('exlink'))
if __name__ == "__main__":
weburl = get_cnb_weburl(5000)
print("Run_url:",weburl)
app.config.from_pyfile("config.py")
app.run(host="0.0.0.0")