From d7c6efcd0ee61700f822748ea01bc413d108c858 Mon Sep 17 00:00:00 2001 From: JSC Date: Sun, 6 Jul 2025 17:31:04 +0200 Subject: [PATCH] refactor(admin): streamline sound scanning route to use scheduler service and require admin role --- app/routes/admin.py | 54 +------------------------------------- app/routes/admin_sounds.py | 9 +++---- 2 files changed, 5 insertions(+), 58 deletions(-) diff --git a/app/routes/admin.py b/app/routes/admin.py index 4c3ed06..a4112ac 100644 --- a/app/routes/admin.py +++ b/app/routes/admin.py @@ -1,11 +1,9 @@ """Admin routes for the application.""" -from flask import Blueprint, request +from flask import Blueprint from app.services.decorators import get_current_user, require_auth, require_role from app.services.scheduler_service import scheduler_service -from app.services.sound_normalizer_service import SoundNormalizerService -from app.services.sound_scanner_service import SoundScannerService bp = Blueprint("admin", __name__) @@ -39,53 +37,3 @@ def manual_credit_refill() -> dict: return scheduler_service.trigger_credit_refill_now() -@bp.route("/sounds/scan", methods=["POST"]) -@require_auth -@require_role("admin") -def manual_sound_scan() -> dict: - """Manually trigger sound directory scan (admin only).""" - return scheduler_service.trigger_sound_scan_now() - - -@bp.route("/sounds/stats") -@require_auth -@require_role("admin") -def sound_statistics() -> dict: - """Get sound database statistics (admin only).""" - return SoundScannerService.get_scan_statistics() - - -@bp.route("/sounds/normalize/", methods=["POST"]) -@require_auth -@require_role("admin") -def normalize_sound(sound_id: int) -> dict: - """Normalize a specific sound file (admin only).""" - overwrite = request.args.get("overwrite", "false").lower() == "true" - return SoundNormalizerService.normalize_sound(sound_id, overwrite) - - -@bp.route("/sounds/normalize-all", methods=["POST"]) -@require_auth -@require_role("admin") -def normalize_all_sounds() -> dict: - """Normalize all soundboard files (admin only).""" - overwrite = request.args.get("overwrite", "false").lower() == "true" - limit_str = request.args.get("limit") - limit = int(limit_str) if limit_str else None - return SoundNormalizerService.normalize_all_sounds(overwrite, limit) - - -@bp.route("/sounds/normalization-status") -@require_auth -@require_role("admin") -def normalization_status() -> dict: - """Get normalization status statistics (admin only).""" - return SoundNormalizerService.get_normalization_status() - - -@bp.route("/sounds/ffmpeg-check") -@require_auth -@require_role("admin") -def ffmpeg_check() -> dict: - """Check ffmpeg availability and capabilities (admin only).""" - return SoundNormalizerService.check_ffmpeg_availability() diff --git a/app/routes/admin_sounds.py b/app/routes/admin_sounds.py index db9acc2..9752978 100644 --- a/app/routes/admin_sounds.py +++ b/app/routes/admin_sounds.py @@ -4,6 +4,7 @@ from flask import Blueprint, jsonify, request from app.services.decorators import require_admin, require_auth, require_role from app.services.error_handling_service import ErrorHandlingService +from app.services.scheduler_service import scheduler_service from app.services.sound_normalizer_service import SoundNormalizerService from app.services.sound_scanner_service import SoundScannerService @@ -11,13 +12,11 @@ bp = Blueprint("admin_sounds", __name__) @bp.route("/scan", methods=["POST"]) -@require_auth -@require_role("admin") +@require_admin def scan_sounds(): """Manually trigger sound scanning.""" - return ErrorHandlingService.wrap_service_call( - SoundScannerService.scan_soundboard_directory, - request.get_json().get("directory") if request.get_json() else None, + return ErrorHandlingService.handle_service_result( + scheduler_service.trigger_sound_scan_now() )