Coverage for /usr/local/lib/python3.12/site-packages/prefect/server/api/templates.py: 86%
14 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 02:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 02:04 +0000
1import orjson
2from fastapi import Body, Response
3from jinja2.exceptions import TemplateSyntaxError
5from prefect.server.utilities.server import PrefectRouter
6from prefect.server.utilities.user_templates import (
7 TemplateSecurityError,
8 validate_user_template,
9)
11router: PrefectRouter = PrefectRouter(tags=["Automations"])
14# deprecated and can be removed after the ui removes its dependency on it
15# use /templates/validate instead
16@router.post(
17 "/automations/templates/validate",
18 response_class=Response,
19)
20@router.post(
21 "/templates/validate",
22 response_class=Response,
23)
24def validate_template(template: str = Body(default="")) -> Response:
25 try:
26 validate_user_template(template)
27 return Response(content="", status_code=204)
28 except (TemplateSyntaxError, TemplateSecurityError) as e:
29 return Response(
30 status_code=422,
31 media_type="application/json",
32 content=orjson.dumps(
33 {
34 "error": {
35 "line": e.lineno,
36 "message": e.message,
37 "source": template,
38 },
39 }
40 ),
41 )