- 统一移除手动创建的数据库session,统一使用models模块中的db.session - 修正项目创建接口,增加开始和结束日期的格式验证与处理 - 更新导入项目接口,使用枚举类型校验项目类型并优化异常处理 - 更新统计接口,避免多次查询假期数据,优化日期字符串处理 - 删除回滚前多余的session关闭调用,改为使用db.session.rollback() - app.py中重构数据库初始化:统一配置SQLAlchemy,动态创建数据库路径和表 - 项目模型新增开始日期和结束日期字段支持 - 添加导入批次历史记录模型支持 - 优化工具函数中日期类型提示,移除无用导入 - 更新requirements.txt依赖版本回退,确保兼容性 - 前端菜单添加导入历史导航入口,实现页面访问路由绑定
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from flask import Flask, render_template
|
|
from flask_cors import CORS
|
|
from models.models import db
|
|
from api.projects import projects_bp
|
|
from api.timerecords import timerecords_bp
|
|
from api.statistics import statistics_bp
|
|
from api.data_import import data_import_bp
|
|
import os
|
|
|
|
def create_app():
|
|
app = Flask(__name__,
|
|
template_folder='../templates',
|
|
static_folder='../static')
|
|
|
|
# 启用CORS支持
|
|
CORS(app)
|
|
|
|
# 数据库配置
|
|
# 获取项目根目录下的data文件夹路径
|
|
data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'data')
|
|
os.makedirs(data_dir, exist_ok=True)
|
|
db_path = os.path.join(data_dir, 'timetrack.db')
|
|
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
|
|
|
# 初始化数据库
|
|
db.init_app(app)
|
|
|
|
# 在应用上下文中创建数据库表
|
|
with app.app_context():
|
|
db.create_all()
|
|
|
|
# 注册蓝图
|
|
app.register_blueprint(projects_bp)
|
|
app.register_blueprint(timerecords_bp)
|
|
app.register_blueprint(statistics_bp)
|
|
app.register_blueprint(data_import_bp)
|
|
|
|
# 主页路由
|
|
@app.route('/')
|
|
def index():
|
|
return render_template('index.html')
|
|
|
|
@app.route('/projects')
|
|
def projects():
|
|
return render_template('projects.html')
|
|
|
|
@app.route('/timerecords')
|
|
def timerecords():
|
|
return render_template('timerecords.html')
|
|
|
|
@app.route('/statistics')
|
|
def statistics():
|
|
return render_template('statistics.html')
|
|
|
|
@app.route('/import')
|
|
def import_page():
|
|
return render_template('import.html')
|
|
|
|
return app
|
|
|
|
if __name__ == '__main__':
|
|
app = create_app()
|
|
app.run(debug=True, host='0.0.0.0', port=5000) |