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

from passbook.core.models import Application, Provider


class ApplicationForm(forms.ModelForm):
    """Application Form"""

    provider = forms.ModelChoiceField(
        queryset=Provider.objects.all().order_by('pk').select_subclasses(), required=False
    )

    class Meta:

        model = Application
        fields = [
            "name",
            "slug",
            "skip_authorization",
            "provider",
            "meta_launch_url",
            "meta_icon_url",
            "meta_description",
            "meta_publisher",
            "policies",
        ]
        widgets = {
            "name": forms.TextInput(),
            "meta_launch_url": forms.TextInput(),
            "meta_icon_url": forms.TextInput(),
            "meta_publisher": forms.TextInput(),
            "policies": FilteredSelectMultiple(_("policies"), False),
        }
        labels = {
            "meta_launch_url": _("Launch URL"),
            "meta_icon_url": _("Icon URL"),
            "meta_description": _("Description"),
            "meta_publisher": _("Publisher"),
        }
        help_texts = {"policies": _("Policies required to access this Application.")}