refactor(admin): streamline sound scanning route to use scheduler service and require admin role

This commit is contained in:
JSC
2025-07-06 17:31:04 +02:00
parent 4f18f3e64e
commit d7c6efcd0e
2 changed files with 5 additions and 58 deletions

View File

@@ -1,11 +1,9 @@
"""Admin routes for the application.""" """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.decorators import get_current_user, require_auth, require_role
from app.services.scheduler_service import scheduler_service 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__) bp = Blueprint("admin", __name__)
@@ -39,53 +37,3 @@ def manual_credit_refill() -> dict:
return scheduler_service.trigger_credit_refill_now() 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/<int:sound_id>", 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()

View File

@@ -4,6 +4,7 @@ from flask import Blueprint, jsonify, request
from app.services.decorators import require_admin, require_auth, require_role from app.services.decorators import require_admin, require_auth, require_role
from app.services.error_handling_service import ErrorHandlingService 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_normalizer_service import SoundNormalizerService
from app.services.sound_scanner_service import SoundScannerService from app.services.sound_scanner_service import SoundScannerService
@@ -11,13 +12,11 @@ bp = Blueprint("admin_sounds", __name__)
@bp.route("/scan", methods=["POST"]) @bp.route("/scan", methods=["POST"])
@require_auth @require_admin
@require_role("admin")
def scan_sounds(): def scan_sounds():
"""Manually trigger sound scanning.""" """Manually trigger sound scanning."""
return ErrorHandlingService.wrap_service_call( return ErrorHandlingService.handle_service_result(
SoundScannerService.scan_soundboard_directory, scheduler_service.trigger_sound_scan_now()
request.get_json().get("directory") if request.get_json() else None,
) )