38 lines
1023 B
Python
38 lines
1023 B
Python
|
|
"""Detection-level taxonomy API.
|
||
|
|
|
||
|
|
Read-only in M7 — M8 will add CRUD. The four defaults are seeded at boot
|
||
|
|
via `app.services.detection_levels.seed_detection_levels()`.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
from flask import Blueprint, jsonify
|
||
|
|
|
||
|
|
from app.core.auth_decorators import require_auth, require_perm
|
||
|
|
from app.services import detection_levels as svc
|
||
|
|
|
||
|
|
bp = Blueprint("detection_levels", __name__, url_prefix="/detection-levels")
|
||
|
|
|
||
|
|
|
||
|
|
def _serialize(view: svc.DetectionLevelView) -> dict[str, Any]:
|
||
|
|
return {
|
||
|
|
"id": str(view.id),
|
||
|
|
"key": view.key,
|
||
|
|
"label_fr": view.label_fr,
|
||
|
|
"label_en": view.label_en,
|
||
|
|
"color_token": view.color_token,
|
||
|
|
"position": view.position,
|
||
|
|
"is_default": view.is_default,
|
||
|
|
"is_system": view.is_system,
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
@bp.get("")
|
||
|
|
@require_auth
|
||
|
|
@require_perm("detection_level.read")
|
||
|
|
def list_detection_levels():
|
||
|
|
items = svc.list_detection_levels()
|
||
|
|
return jsonify({"items": [_serialize(it) for it in items]})
|