from django import forms
from django.utils.translation import ugettext_lazy as _
from datacenterlight.utils import get_ip_address
from .models import ContactUs

import ipaddress


class ContactForm(forms.ModelForm):
    class Meta:
        fields = ['name', 'email', 'message', 'ip_address']
        model = ContactUs

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(ContactForm, self).__init__(*args, **kwargs)

    def clean_ip_address(self):
        input_ip_address_text = self.cleaned_data.get('ip_address')
        request_ip_address = get_ip_address(self.request)
        ip_address_type_text = 'ipv4'
        if (type(ipaddress.ip_address(request_ip_address))
                == ipaddress.IPv4Address):
            ip_address_type_text = 'ipv4'
        elif (type(ipaddress.ip_address(request_ip_address))
                == ipaddress.IPv6Address):
            ip_address_type_text = 'ipv6'
        if input_ip_address_text.strip().lower() == ip_address_type_text:
            return request_ip_address
        else:
            raise forms.ValidationError(_("Input correct IP address type"))