45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook administration forms"""
 | 
						|
from django import forms
 | 
						|
from django.conf import settings
 | 
						|
from django.contrib.admin.widgets import FilteredSelectMultiple
 | 
						|
from django.utils.translation import gettext as _
 | 
						|
 | 
						|
from passbook.core.models import DummyFactor, PasswordFactor
 | 
						|
from passbook.lib.utils.reflection import path_to_class
 | 
						|
 | 
						|
GENERAL_FIELDS = ['name', 'slug', 'order', 'policies', 'enabled']
 | 
						|
 | 
						|
def get_authentication_backends():
 | 
						|
    """Return all available authentication backends as tuple set"""
 | 
						|
    for backend in settings.AUTHENTICATION_BACKENDS:
 | 
						|
        klass = path_to_class(backend)
 | 
						|
        yield backend, getattr(klass(), 'name', '%s (%s)' % (klass.__name__, klass.__module__))
 | 
						|
 | 
						|
class PasswordFactorForm(forms.ModelForm):
 | 
						|
    """Form to create/edit Password Factors"""
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        model = PasswordFactor
 | 
						|
        fields = GENERAL_FIELDS + ['backends', 'password_policies']
 | 
						|
        widgets = {
 | 
						|
            'name': forms.TextInput(),
 | 
						|
            'order': forms.NumberInput(),
 | 
						|
            'policies': FilteredSelectMultiple(_('policies'), False),
 | 
						|
            'backends': FilteredSelectMultiple(_('backends'), False,
 | 
						|
                                               choices=get_authentication_backends())
 | 
						|
        }
 | 
						|
 | 
						|
class DummyFactorForm(forms.ModelForm):
 | 
						|
    """Form to create/edit Dummy Factor"""
 | 
						|
 | 
						|
    class Meta:
 | 
						|
 | 
						|
        model = DummyFactor
 | 
						|
        fields = GENERAL_FIELDS
 | 
						|
        widgets = {
 | 
						|
            'name': forms.TextInput(),
 | 
						|
            'order': forms.NumberInput(),
 | 
						|
            'policies': FilteredSelectMultiple(_('policies'), False)
 | 
						|
        }
 |