Coverage for /usr/local/lib/python3.12/site-packages/prefect/server/api/templates.py: 64%

14 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 11:21 +0000

1import orjson 1a

2from fastapi import Body, Response 1a

3from jinja2.exceptions import TemplateSyntaxError 1a

4 

5from prefect.server.utilities.server import PrefectRouter 1a

6from prefect.server.utilities.user_templates import ( 1a

7 TemplateSecurityError, 

8 validate_user_template, 

9) 

10 

11router: PrefectRouter = PrefectRouter(tags=["Automations"]) 1a

12 

13 

14# deprecated and can be removed after the ui removes its dependency on it 

15# use /templates/validate instead 

16@router.post( 1a

17 "/automations/templates/validate", 

18 response_class=Response, 

19) 

20@router.post( 1a

21 "/templates/validate", 

22 response_class=Response, 

23) 

24def validate_template(template: str = Body(default="")) -> Response: 1a

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 )