"""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.factors.forms import GENERAL_FIELDS from passbook.factors.password.models import PasswordFactor from passbook.lib.utils.reflection import path_to_class 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 PasswordForm(forms.Form): """Password authentication form""" password = forms.CharField(widget=forms.PasswordInput(attrs={ 'placeholder': _('Password'), 'autofocus': 'autofocus', 'autocomplete': 'current-password' })) class PasswordFactorForm(forms.ModelForm): """Form to create/edit Password Factors""" class Meta: model = PasswordFactor fields = GENERAL_FIELDS + ['backends', 'password_policies', 'reset_factors'] widgets = { 'name': forms.TextInput(), 'order': forms.NumberInput(), 'policies': FilteredSelectMultiple(_('policies'), False), 'backends': FilteredSelectMultiple(_('backends'), False, choices=get_authentication_backends()), 'password_policies': FilteredSelectMultiple(_('password policies'), False), 'reset_factors': FilteredSelectMultiple(_('reset factors'), False), }