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"))