File tree Expand file tree Collapse file tree 2 files changed +11
-0
lines changed Expand file tree Collapse file tree 2 files changed +11
-0
lines changed Original file line number Diff line number Diff line change 1515from  .exceptions  import  (
1616    JinjaTemplateError ,
1717    JinjaTemplateNotFoundError ,
18+     JinjaTemplateOperationViolationError ,
1819    JinjaTemplateSyntaxError ,
1920    JinjaTemplateUndefinedError ,
2021)
@@ -70,6 +71,11 @@ def get_variables(self) -> list[str]:
7071            template_source  =  env .loader .get_source (env , self ._template )[0 ]
7172
7273        template  =  env .parse (template_source )
74+         if  self .is_string_based  and  any (
75+             node .__class__ .__name__  in  ["Call" , "Import" , "Include" ] for  node  in  template .body 
76+         ):
77+             raise  JinjaTemplateOperationViolationError ()
78+ 
7379        return  sorted (meta .find_undeclared_variables (template ))
7480
7581    async  def  render (self , variables : dict [str , Any ]) ->  str :
Original file line number Diff line number Diff line change @@ -31,3 +31,8 @@ class JinjaTemplateUndefinedError(JinjaTemplateError):
3131    def  __init__ (self , message : str  |  None , errors : list [UndefinedJinja2Error ]) ->  None :
3232        self .message  =  message  or  "Undefined Error" 
3333        self .errors  =  errors 
34+ 
35+ 
36+ class  JinjaTemplateOperationViolationError (JinjaTemplateError ):
37+     def  __init__ (self , message : str  |  None  =  None ) ->  None :
38+         self .message  =  message  or  "Forbidden code found in the template" 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments