* policies/expression: migrate to raw python instead of jinja2 * lib/expression: create base evaluator, custom subclass for policies * core: rewrite propertymappings to use python * providers/saml: update to new PropertyMappings * sources/ldap: update to new PropertyMappings * docs: update docs for new propertymappings * root: remove jinja2 * root: re-add jinja to lock file as its implicitly required
		
			
				
	
	
		
			32 lines
		
	
	
		
			888 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			888 B
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook Expression Policy forms"""
 | 
						|
 | 
						|
from django import forms
 | 
						|
 | 
						|
from passbook.admin.fields import CodeMirrorWidget
 | 
						|
from passbook.policies.expression.evaluator import PolicyEvaluator
 | 
						|
from passbook.policies.expression.models import ExpressionPolicy
 | 
						|
from passbook.policies.forms import GENERAL_FIELDS
 | 
						|
 | 
						|
 | 
						|
class ExpressionPolicyForm(forms.ModelForm):
 | 
						|
    """ExpressionPolicy Form"""
 | 
						|
 | 
						|
    template_name = "policy/expression/form.html"
 | 
						|
 | 
						|
    def clean_expression(self):
 | 
						|
        """Test Syntax"""
 | 
						|
        expression = self.cleaned_data.get("expression")
 | 
						|
        PolicyEvaluator(self.instance.name).validate(expression)
 | 
						|
        return expression
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        model = ExpressionPolicy
 | 
						|
        fields = GENERAL_FIELDS + [
 | 
						|
            "expression",
 | 
						|
        ]
 | 
						|
        widgets = {
 | 
						|
            "name": forms.TextInput(),
 | 
						|
            "expression": CodeMirrorWidget(mode="python"),
 | 
						|
        }
 |