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_base import CMSPluginBase
 | 
				
			||||||
from cms.plugin_pool import plugin_pool
 | 
					from cms.plugin_pool import plugin_pool
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .cms_models import (
 | 
					from .cms_models import (
 | 
				
			||||||
    DCLBannerItemPluginModel, DCLBannerListPluginModel, DCLContactPluginModel,
 | 
					    DCLBannerItemPluginModel, DCLBannerListPluginModel, DCLContactPluginModel,
 | 
				
			||||||
| 
						 | 
					@ -10,7 +11,9 @@ from .cms_models import (
 | 
				
			||||||
    DCLSectionPromoPluginModel, DCLCalculatorPluginModel
 | 
					    DCLSectionPromoPluginModel, DCLCalculatorPluginModel
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from .models import VMTemplate
 | 
					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
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
| 
						 | 
					@ -170,6 +173,25 @@ class DCLContactPlugin(CMSPluginBase):
 | 
				
			||||||
    render_template = "datacenterlight/cms/contact.html"
 | 
					    render_template = "datacenterlight/cms/contact.html"
 | 
				
			||||||
    cache = False
 | 
					    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
 | 
					@plugin_pool.register_plugin
 | 
				
			||||||
class DCLFooterPlugin(CMSPluginBase):
 | 
					class DCLFooterPlugin(CMSPluginBase):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,31 @@
 | 
				
			||||||
from django import forms
 | 
					from django import forms
 | 
				
			||||||
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					from datacenterlight.utils import get_ip_address
 | 
				
			||||||
from .models import ContactUs
 | 
					from .models import ContactUs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import ipaddress
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ContactForm(forms.ModelForm):
 | 
					class ContactForm(forms.ModelForm):
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        fields = ['name', 'email', 'message']
 | 
					        fields = ['name', 'email', 'message', 'ip_address']
 | 
				
			||||||
        model = ContactUs
 | 
					        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">
 | 
					        <div class="form-group">
 | 
				
			||||||
            <label class="control-label col-sm-2" for="name">{% trans "Name" %}</label>
 | 
					            <label class="control-label col-sm-2" for="name">{% trans "Name" %}</label>
 | 
				
			||||||
            <div class="col-sm-10">
 | 
					            <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>
 | 
					                <div class="help-block with-errors"></div>
 | 
				
			||||||
                {{contact_form.name.errors}}
 | 
					                {{contact_form.name.errors}}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@
 | 
				
			||||||
        <div class="form-group">
 | 
					        <div class="form-group">
 | 
				
			||||||
            <label class="control-label col-sm-2" for="email">{% trans "Email" %}</label>
 | 
					            <label class="control-label col-sm-2" for="email">{% trans "Email" %}</label>
 | 
				
			||||||
            <div class="col-sm-10">
 | 
					            <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>
 | 
					                <div class="help-block with-errors"></div>
 | 
				
			||||||
                {{contact_form.email.errors}}
 | 
					                {{contact_form.email.errors}}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,15 @@
 | 
				
			||||||
                {{contact_form.message.errors}}
 | 
					                {{contact_form.message.errors}}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </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="form-group">
 | 
				
			||||||
            <div class="col-sm-offset-2 col-sm-10 text-right">
 | 
					            <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>
 | 
					                <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.vat_validation_status = tax_id_obj.verification.status
 | 
				
			||||||
        billing_address.save()
 | 
					        billing_address.save()
 | 
				
			||||||
    return tax_id_obj
 | 
					    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"
 | 
					    template_name = "datacenterlight/contact_form.html"
 | 
				
			||||||
    form_class = ContactForm
 | 
					    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):
 | 
					    def get(self, request, *args, **kwargs):
 | 
				
			||||||
        return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
					        return HttpResponseRedirect(reverse('datacenterlight:index'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue