增加用户,统计,应用接口

This commit is contained in:
Jalin
2019-01-12 13:09:59 +08:00
parent 3c982e4ac4
commit e722eacbb8
6 changed files with 141 additions and 13 deletions

View File

@@ -61,6 +61,9 @@ class Config:
EMAIL_SERVER_USER = ''
EMAIL_SERVER_PASSWORD = ''
WEB_ENABLE = 0
WEB_USER = {}
envs = []
retry_time = 5
last_modify_time = 0

View File

@@ -17,7 +17,7 @@ class QueryLog(BaseLog):
quick_log = []
data = {
'query_count': 1,
'query_count': 0,
'last_time': '',
}
data_path = None

View File

@@ -0,0 +1,37 @@
from flask import Blueprint, request
from flask.json import jsonify
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.config import Config
from py12306.query.query import Query
from py12306.user.user import User
app = Blueprint('app', __name__)
@app.route('/app/menus', methods=['GET'])
@jwt_required
def menus():
"""
菜单列表
"""
menus = [
{"id": 10, "name": "首页", "url": "/", "icon": "fa fa-tachometer-alt"},
{"id": 40, "name": "数据分析", "url": "/analyze", "icon": "fa fa-signature"},
{"id": 50, "name": "帮助中心", "url": "/help", "icon": "fa fa-search"}
]
return jsonify(menus)
@app.route('/app/actions', methods=['GET'])
@jwt_required
def actions():
"""
操作列表
"""
actions = [
{"text": "退出登录", "link": "", "icon": "fa fa-sign-out-alt"}
]
return jsonify(actions)

View File

@@ -0,0 +1,31 @@
from flask import Blueprint, request
from flask.json import jsonify
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.config import Config
from py12306.query.query import Query
from py12306.user.user import User
stat = Blueprint('stat', __name__)
@stat.route('/stat/dashboard', methods=['GET'])
@jwt_required
def dashboard():
"""
状态统计
任务数量,用户数量,查询次数
节点信息TODO
:return:
"""
from py12306.log.query_log import QueryLog
query_job_count = len(Query().jobs)
user_job_count = len(User().users)
query_count = QueryLog().data.get('query_count')
return jsonify({
'query_job_count': query_job_count,
'user_job_count': user_job_count,
'query_count': query_count
})

View File

@@ -4,14 +4,44 @@ from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.config import Config
from py12306.user.job import UserJob
from py12306.user.user import User
user = Blueprint('user', __name__)
@user.route('/login', methods=['POST'])
def login():
"""
用户登录
:return:
"""
username = request.json.get('username', None)
password = request.json.get('password', None)
if username and password and username == '1':
if username and password and username == Config().WEB_USER.get('username') and password == Config().WEB_USER.get(
'password'):
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token)
return jsonify({"msg": "用户名或密码错误"}), 401
@user.route('/users', methods=['GET'])
def users():
"""
用户任务列表
:return:
"""
jobs = User().users
result = map(convert_job_to_info, jobs)
return jsonify(result)
def convert_job_to_info(job: UserJob):
return {
'key': job.key,
'user_name': job.user_name,
'is_ready': job.is_ready,
'is_loaded': job.user_loaded, # 是否成功加载 ready 是当前是否可用
'last_heartbeat': job.last_heartbeat
}

View File

@@ -5,23 +5,50 @@ from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity)
from py12306.web.handler.user import user
from py12306.helpers.func import *
app = Flask(__name__)
app.register_blueprint(user)
# app.config['JWT_TOKEN_LOCATION'] = ['json']
app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
jwt = JWTManager(app)
@app.route('/', methods=['GET'])
def test():
print(111111)
# @flask.route('/', methods=['GET'])
# def test():
# print(111111)
def run(port=8080):
app.run(debug=True, port=port if port else 8080, host='0.0.0.0')
# def run(port=8080):
# flask.run(debug=True, port=port if port else 8080, host='0.0.0.0')
@singleton
class Web:
session = None
jwt = None
def __init__(self):
self.session = Flask(__name__)
self.register_blueprint()
self.session.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
self.jwt = JWTManager(self.session)
pass
def register_blueprint(self):
from py12306.web.handler.user import user
from py12306.web.handler.stat import stat
from py12306.web.handler.app import app
self.session.register_blueprint(user)
self.session.register_blueprint(stat)
self.session.register_blueprint(app)
@classmethod
def run(cls):
self = cls()
self.start()
pass
def start(self):
self.session.run(debug=True, port=8080, host='0.0.0.0')
if __name__ == '__main__':
run()
Web.run()