from apps.common.widgets.crispy.submit import NoClassSubmit
from apps.import_app.models import ImportProfile
from crispy_forms.bootstrap import FormActions
from crispy_forms.helper import FormHelper
from crispy_forms.layout import (
    Layout,
)
from django import forms
from django.utils.translation import gettext_lazy as _


class ImportProfileForm(forms.ModelForm):
    class Meta:
        model = ImportProfile
        fields = [
            "name",
            "version",
            "yaml_config",
        ]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.form_method = "post"
        self.helper.layout = Layout("name", "version", "yaml_config")

        if self.instance and self.instance.pk:
            self.helper.layout.append(
                FormActions(
                    NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
                ),
            )
        else:
            self.helper.layout.append(
                FormActions(
                    NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
                ),
            )


class ImportRunFileUploadForm(forms.Form):
    file = forms.FileField(label=_("Select a file"))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.form_method = "post"
        self.helper.layout = Layout(
            "file",
            FormActions(
                NoClassSubmit("submit", _("Import"), css_class="btn btn-primary"),
            ),
        )
