updated documentation folder

This commit is contained in:
Quality System Admin
2025-11-03 21:17:10 +02:00
parent 8d47e6e82d
commit 1ade0b5681
29 changed files with 6113 additions and 32 deletions

View File

@@ -3,8 +3,6 @@ import os
import mariadb
from datetime import datetime, timedelta
from flask import Blueprint, render_template, redirect, url_for, request, flash, session, current_app, jsonify, send_from_directory
from .models import User
from . import db
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
import csv
@@ -94,9 +92,9 @@ def login():
except:
user_modules = []
# Superadmin and admin have access to all modules
if user['role'] in ['superadmin', 'admin']:
user_modules = ['quality', 'warehouse', 'labels']
# Superadmin has access to all modules
if user['role'] == 'superadmin':
user_modules = ['quality', 'warehouse', 'labels', 'daily_mirror']
session['modules'] = user_modules
print("Logged in as:", session.get('user'), session.get('role'), "modules:", user_modules)
@@ -3580,4 +3578,137 @@ def help(page='index'):
# "pdf_url": "https://your-linux-server/generate_labels_pdf/15",
# "printer_name": "default",
# "copies": 1
# }
# }
# ========================================
# DATABASE BACKUP MANAGEMENT ROUTES
# ========================================
@bp.route('/api/backup/create', methods=['POST'])
@admin_plus
def api_backup_create():
"""Create a new database backup"""
try:
from app.database_backup import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
result = backup_manager.create_backup()
return jsonify(result)
except Exception as e:
return jsonify({
'success': False,
'message': f'Backup failed: {str(e)}'
}), 500
@bp.route('/api/backup/list', methods=['GET'])
@admin_plus
def api_backup_list():
"""List all available backups"""
try:
from app.database_backup import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
backups = backup_manager.list_backups()
return jsonify({
'success': True,
'backups': backups
})
except Exception as e:
return jsonify({
'success': False,
'message': f'Failed to list backups: {str(e)}'
}), 500
@bp.route('/api/backup/download/<filename>', methods=['GET'])
@admin_plus
def api_backup_download(filename):
"""Download a backup file"""
try:
from app.database_backup import DatabaseBackupManager
from flask import send_file
import os
backup_manager = DatabaseBackupManager()
backup_path = backup_manager.backup_path
file_path = os.path.join(backup_path, filename)
# Security: ensure filename doesn't contain path traversal
if '..' in filename or '/' in filename:
return jsonify({
'success': False,
'message': 'Invalid filename'
}), 400
if os.path.exists(file_path):
return send_file(file_path, as_attachment=True, download_name=filename)
else:
return jsonify({
'success': False,
'message': 'Backup file not found'
}), 404
except Exception as e:
return jsonify({
'success': False,
'message': f'Download failed: {str(e)}'
}), 500
@bp.route('/api/backup/delete/<filename>', methods=['DELETE'])
@admin_plus
def api_backup_delete(filename):
"""Delete a backup file"""
try:
from app.database_backup import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
result = backup_manager.delete_backup(filename)
return jsonify(result)
except Exception as e:
return jsonify({
'success': False,
'message': f'Delete failed: {str(e)}'
}), 500
@bp.route('/api/backup/schedule', methods=['GET', 'POST'])
@admin_plus
def api_backup_schedule():
"""Get or save backup schedule configuration"""
try:
from app.database_backup import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
if request.method == 'POST':
schedule = request.json
result = backup_manager.save_backup_schedule(schedule)
return jsonify(result)
else:
schedule = backup_manager.get_backup_schedule()
return jsonify({
'success': True,
'schedule': schedule
})
except Exception as e:
return jsonify({
'success': False,
'message': f'Schedule operation failed: {str(e)}'
}), 500
@bp.route('/api/backup/restore/<filename>', methods=['POST'])
@superadmin_only
def api_backup_restore(filename):
"""Restore database from a backup file (superadmin only)"""
try:
from app.database_backup import DatabaseBackupManager
backup_manager = DatabaseBackupManager()
result = backup_manager.restore_backup(filename)
return jsonify(result)
except Exception as e:
return jsonify({
'success': False,
'message': f'Restore failed: {str(e)}'
}), 500