"""备份管理路由""" from flask import render_template, request, jsonify, send_file from app.routes.admin import admin_bp, login_required from app.services.backup_service import BackupService @admin_bp.route('/backup') @login_required def backup_page(): """备份管理页面""" backups = BackupService.list_backups() stats = { 'total_backups': len(backups), 'total_size': sum(b['size'] for b in backups) } return render_template('admin/backup.html', backups=backups, stats=stats) @admin_bp.route('/backup/create', methods=['POST']) @login_required def backup_create(): """创建备份""" include_uploads = request.form.get('include_uploads', 'true').lower() == 'true' result, error = BackupService.create_backup(include_uploads=include_uploads) if error: return jsonify({'success': False, 'message': error}), 400 return jsonify({ 'success': True, 'backup': { 'filename': result['filename'], 'size': BackupService.format_filesize(result['size']), 'timestamp': result['timestamp'] } }) @admin_bp.route('/backup/download/') @login_required def backup_download(filename): """下载备份文件""" filepath = BackupService.get_backup_path(filename) import os if not os.path.exists(filepath): return jsonify({'success': False, 'message': '备份文件不存在'}), 404 return send_file( filepath, as_attachment=True, download_name=filename ) @admin_bp.route('/backup/delete/', methods=['POST']) @login_required def backup_delete(filename): """删除备份文件""" success, error = BackupService.delete_backup(filename) if not success: return jsonify({'success': False, 'message': error}), 400 return jsonify({'success': True})