"""passbook administration forms"""
from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple
from django.utils.translation import gettext_lazy as _

from passbook.factors.email.models import EmailFactor
from passbook.factors.forms import GENERAL_FIELDS


class EmailFactorForm(forms.ModelForm):
    """Form to create/edit Dummy Factor"""

    class Meta:

        model = EmailFactor
        fields = GENERAL_FIELDS + [
            "host",
            "port",
            "username",
            "password",
            "use_tls",
            "use_ssl",
            "timeout",
            "from_address",
            "ssl_keyfile",
            "ssl_certfile",
        ]
        widgets = {
            "name": forms.TextInput(),
            "order": forms.NumberInput(),
            "policies": FilteredSelectMultiple(_("policies"), False),
            "host": forms.TextInput(),
            "username": forms.TextInput(),
            "password": forms.TextInput(),
            "ssl_keyfile": forms.TextInput(),
            "ssl_certfile": forms.TextInput(),
        }
        labels = {
            "use_tls": _("Use TLS"),
            "use_ssl": _("Use SSL"),
            "ssl_keyfile": _("SSL Keyfile (optional)"),
            "ssl_certfile": _("SSL Certfile (optional)"),
        }
        help_texts = {
            "policies": _(
                "Policies which determine if this factor applies to the current user."
            )
        }