refactor(admin): streamline sound scanning route to use scheduler service and require admin role
This commit is contained in:
@@ -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()
|
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user