from django import forms
from django.utils.translation import gettext_lazy as _
from vrtManager.connection import CONN_SOCKET, CONN_SSH, CONN_TCP, CONN_TLS

from computes.models import Compute

from .validators import validate_hostname


class TcpComputeForm(forms.ModelForm):
    hostname = forms.CharField(validators=[validate_hostname])
    type = forms.IntegerField(widget=forms.HiddenInput, initial=CONN_TCP)

    class Meta:
        model = Compute
        widgets = {"password": forms.PasswordInput()}
        fields = "__all__"


class SshComputeForm(forms.ModelForm):
    hostname = forms.CharField(validators=[validate_hostname], label=_("FQDN/IP"))
    type = forms.IntegerField(widget=forms.HiddenInput, initial=CONN_SSH)

    class Meta:
        model = Compute
        exclude = ["password"]


class TlsComputeForm(forms.ModelForm):
    hostname = forms.CharField(validators=[validate_hostname])
    type = forms.IntegerField(widget=forms.HiddenInput, initial=CONN_TLS)

    class Meta:
        model = Compute
        widgets = {"password": forms.PasswordInput()}
        fields = "__all__"


class SocketComputeForm(forms.ModelForm):
    hostname = forms.CharField(widget=forms.HiddenInput, initial="localhost")
    type = forms.IntegerField(widget=forms.HiddenInput, initial=CONN_SOCKET)

    class Meta:
        model = Compute
        fields = ["name", "details", "hostname", "type"]