Show captcha text
This commit is contained in:
		
					parent
					
						
							
								e68e0b32f8
							
						
					
				
			
			
				commit
				
					
						409405f296
					
				
			
		
					 5 changed files with 72 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
from cms.plugin_base import CMSPluginBase
 | 
			
		||||
from cms.plugin_pool import plugin_pool
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from .cms_models import (
 | 
			
		||||
    DCLBannerItemPluginModel, DCLBannerListPluginModel, DCLContactPluginModel,
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +11,9 @@ from .cms_models import (
 | 
			
		|||
    DCLSectionPromoPluginModel, DCLCalculatorPluginModel
 | 
			
		||||
)
 | 
			
		||||
from .models import VMTemplate
 | 
			
		||||
from datacenterlight.utils import clear_all_session_vars
 | 
			
		||||
from datacenterlight.utils import clear_all_session_vars, get_ip_address
 | 
			
		||||
 | 
			
		||||
import ipaddress
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@plugin_pool.register_plugin
 | 
			
		||||
| 
						 | 
				
			
			@ -170,6 +173,25 @@ class DCLContactPlugin(CMSPluginBase):
 | 
			
		|||
    render_template = "datacenterlight/cms/contact.html"
 | 
			
		||||
    cache = False
 | 
			
		||||
 | 
			
		||||
    def render(self, context, instance, placeholder):
 | 
			
		||||
        context = super(DCLContactPlugin, self).render(
 | 
			
		||||
            context, instance, placeholder
 | 
			
		||||
        )
 | 
			
		||||
        request_ip_address = get_ip_address(context['request'])
 | 
			
		||||
        request_v4v6 = ''
 | 
			
		||||
        if (type(ipaddress.ip_address(request_ip_address)) ==
 | 
			
		||||
                ipaddress.IPv4Address):
 | 
			
		||||
            request_v4v6 = 'IPv4'
 | 
			
		||||
        elif (type(ipaddress.ip_address(request_ip_address)) ==
 | 
			
		||||
                ipaddress.IPv6Address):
 | 
			
		||||
            request_v4v6 = 'IPv6'
 | 
			
		||||
        context['ip_address_label_title'] = _(
 | 
			
		||||
            "You are requesting this website from "
 | 
			
		||||
            "{ip_address}.".format(ip_address=request_ip_address))
 | 
			
		||||
        context['ip_address_label'] = _(
 | 
			
		||||
            "Enter '{v4v6}':".format(v4v6=request_v4v6))
 | 
			
		||||
        return context
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@plugin_pool.register_plugin
 | 
			
		||||
class DCLFooterPlugin(CMSPluginBase):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,31 @@
 | 
			
		|||
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']
 | 
			
		||||
        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"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@
 | 
			
		|||
        <div class="form-group">
 | 
			
		||||
            <label class="control-label col-sm-2" for="name">{% trans "Name" %}</label>
 | 
			
		||||
            <div class="col-sm-10">
 | 
			
		||||
                <input type="text" name="name" class="form-control" data-minlength="3" data-error="{% trans 'Please enter your name.' %}" required>
 | 
			
		||||
                <input id="name" type="text" name="name" class="form-control" data-minlength="3" data-error="{% trans 'Please enter your name.' %}" required>
 | 
			
		||||
                <div class="help-block with-errors"></div>
 | 
			
		||||
                {{contact_form.name.errors}}
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
        <div class="form-group">
 | 
			
		||||
            <label class="control-label col-sm-2" for="email">{% trans "Email" %}</label>
 | 
			
		||||
            <div class="col-sm-10">
 | 
			
		||||
                <input name="email" type="email" pattern="^[^@\s]+@([^@\s]+\.)+[^@\s]+$" class="form-control" data-error="{% trans 'Please enter a valid email address.' %}" required>
 | 
			
		||||
                <input name="email" type="email" id="email" pattern="^[^@\s]+@([^@\s]+\.)+[^@\s]+$" class="form-control" data-error="{% trans 'Please enter a valid email address.' %}" required>
 | 
			
		||||
                <div class="help-block with-errors"></div>
 | 
			
		||||
                {{contact_form.email.errors}}
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +47,15 @@
 | 
			
		|||
                {{contact_form.message.errors}}
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="row"><div class="col-sm-2"> </div><div class="col-sm-10">{{ ip_address_label_title }}</div></div>
 | 
			
		||||
        <div class="form-group">
 | 
			
		||||
            <label class="control-label col-sm-2" for="ip_address" style="white-space: nowrap;" >{{ ip_address_label }}</label>
 | 
			
		||||
            <div class="col-sm-10">
 | 
			
		||||
                <input name="ip_address" id="ip_address" type="text" class="form-control"data-error="{% trans 'Please enter the text IPv4 or IPv6 based on your IP address.' %}" required>
 | 
			
		||||
                <div class="help-block with-errors"></div>
 | 
			
		||||
                {{contact_form.ip_address.errors}}
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="form-group">
 | 
			
		||||
            <div class="col-sm-offset-2 col-sm-10 text-right">
 | 
			
		||||
                <div class="form-error hide">{% trans "Sorry, there was an unexpected error. Kindly retry." %}</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -303,3 +303,12 @@ def create_tax_id(stripe_customer_id, billing_address_id, type,
 | 
			
		|||
        billing_address.vat_validation_status = tax_id_obj.verification.status
 | 
			
		||||
        billing_address.save()
 | 
			
		||||
    return tax_id_obj
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_ip_address(request):
 | 
			
		||||
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
 | 
			
		||||
    if x_forwarded_for:
 | 
			
		||||
        ip = x_forwarded_for.split(',')[-1].strip()
 | 
			
		||||
    else:
 | 
			
		||||
        ip = request.META.get('REMOTE_ADDR')
 | 
			
		||||
    return ip
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +49,11 @@ class ContactUsView(FormView):
 | 
			
		|||
    template_name = "datacenterlight/contact_form.html"
 | 
			
		||||
    form_class = ContactForm
 | 
			
		||||
 | 
			
		||||
    def get_form_kwargs(self):
 | 
			
		||||
        kw = super(ContactUsView, self).get_form_kwargs()
 | 
			
		||||
        kw['request'] = self.request
 | 
			
		||||
        return kw
 | 
			
		||||
 | 
			
		||||
    def get(self, request, *args, **kwargs):
 | 
			
		||||
        return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue