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…
Reference in a new issue