Traceback (most recent call last):
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/utils/jinja.py", line 79, in render_template
return get_jenv().from_string(template).render(context)
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
File "/home/tridotsuser/EcommerceBooks/apps/cmswebsite/cmswebsite/./templates/Layout/customweb.html", line 71, in top-level template code
{% block content %} {% endblock %}{% block page_content %} {% endblock %}
File "<template>", line 31, in block "content"
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/sandbox.py", line 407, in getattr
value = getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'product' is undefined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/website/render.py", line 48, in render
data = render_page_by_language(path)
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/website/render.py", line 152, in render_page_by_language
return render_page(path)
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/website/render.py", line 168, in render_page
return build(path)
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/website/render.py", line 175, in build
return build_page(path)
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/website/render.py", line 191, in build_page
html = frappe.render_template(context.source, context)
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/utils/jinja.py", line 81, in render_template
throw(title="Jinja Template Error", msg="<pre>{template}</pre><pre>{tb}</pre>".format(template=template, tb=get_traceback()))
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/__init__.py", line 364, in throw
msgprint(msg, raise_exception=exc, title=title, indicator='red')
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/__init__.py", line 350, in msgprint
_raise_exception()
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/__init__.py", line 316, in _raise_exception
raise raise_exception(msg)
frappe.exceptions.ValidationError: <pre>{% extends "templates/Layout/customweb.html" %}
{% block loader %}
{% include "/templates/pages/defaultpageloader.html" %}
{% endblock %}
{% block meta_block %}
{% if MetaDescription %}<meta name="description" content="{{MetaDescription}}">{% endif %}
{% if MetaKeywords %}<meta name="keywords" content="{{MetaKeywords}}">{% endif %}
{% endblock %}
{% block breadcrumb %}
<div class="title-breadcrumb">
<div class="{%if theme_settings.boxed_layout ==1%}container{%else%}container-fluid{%endif%}" style="padding:0">
<div class="row">
<div class="col-md-6 col-sm-6 col-xs-6">
<ol class="breadcrumb">
<li><a href="/"> <i class="fa fa-home" aria-hidden="true"></i></a></li>
<li><a>Email A Friend</a></li>
</ol>
</div>
</div>
</div>
</div>
{% endblock %}
{% block content %}
<section id="enquiryForm">
<div class="row">
<div class="col-md-8">
<div class="page-body">
<form name="Register" class="form form--normal" id="myForm" method="POST">
<legend><a href="" id = "item-mob">{{product.item}}</a></legend>
<div class = "row">
<div class="alert alert-info" role="alert" id = "response">Your email has been sent successfully!!!</div>
</div>
<div class="form-group">
<label for="FriendEmail">Friend's Email <span class="mandatory">*</span></label>
<input class="fullname form-control" data-val="true" data-val-email="Wrong email" data-val-required="Enter friend's email" id="friend_email" name="FriendEmail" placeholder="Enter friend's email" type="text" value="">
<span class="field-validation-valid text-danger" id="friendemail-error" data-valmsg-for="FriendEmail" data-valmsg-replace="true"><span id="friendemail-error" class="">Enter Your Friend's Email</span></span>
</div>
<div class="form-group">
<label for="YourEmailAddress">Your Email Address <span class="mandatory">*</span></label>
<input class="fullname form-control" data-val="true" data-val-email="Wrong email" data-val-required="Enter your email" id="your_email" name="YourEmailAddress" placeholder="Enter your email address" type="text" value="{% if frappe.session.user!="Guest" %}{% if Customer %}{{Customer.email}}{% else %}{{frappe.session.user}}{% endif %}{% endif %}">
<span class="field-validation-valid text-danger" id="youremail-error" data-valmsg-for="FriendEmail" data-valmsg-replace="true"><span class="">Enter Your Email</span></span>
</div>
<div class="form-group">
<label for="PersonalMessage">Personal Message</label>
<textarea class="personal-message form-control" cols="20" id="personal_message" name="PersonalMessage" placeholder="Enter Personal Message" rows="1"></textarea>
<span class="field-validation-valid text-danger" data-valmsg-for="PersonalMessage" data-valmsg-replace="true"></span>
</div>
<div class="form-group row">
<div class="col form-control-plaintext">
<div class="form-check">
<input class="form-check-input" id="GdprConsent" name="GdprConsent" type="checkbox" checked="checked" value="true"><input name="GdprConsent" type="hidden" value="false">
<label class="form-check-label" for="GdprConsent">
Yes I've read the <a href="/privacy-policy">privacy policy</a> and agree that my data given by me can be stored electronically. My data will thereby only be used to process my inquiry.
</label>
<span class="field-validation-valid text-danger" id="checkbox-err" data-valmsg-for="FriendEmail" data-valmsg-replace="true"><span class="">Accept The Terms and Condition</span></span>
</div>
<span class="field-validation-valid" data-valmsg-for="GdprConsent" data-valmsg-replace="true"></span>
</div>
</div>
{%if catalog_settings.email_a_friend == 1%}
<div class="form-group">
<div class="g-recaptcha" id="captcha_email" data-type="image" data-sitekey="{{catalog_settings.public_key}}"></div>
<div id="g-recaptcha-error2" class = "text-danger" style="display: none;">Captcha is required</div>
</div>
{%endif%}
<!-- <div class="form-group">
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY" data-callback="verifyCaptcha"></div>
<div id="g-recaptcha-error"></div>
</div> -->
<div class="form-group">
<button type="button" name="send-email" class="btn primary send-email-a-friend-button" onclick="sendEmail()">
<i class="fa fa-envelope"></i>
<span> SEND EMAIL</span>
</button>
</div>
</form>
</div>
</div>
<!-- Recent Products -->
<div class="col-md-4 hide123">
<div class="product1">
<div class="headline" style="padding: 0px; margin: 0px;">
<h2 style="font-size: 15px;">Recent products</h2>
</div>
<div class="row">
{% for item in recent_products %}
<!-- <div class="related-products"> -->
<div class="item1">
<div class="pad-5 right-item">
<div class="product-single-right" data-itemrate="150.0">
<a href="/{{item.route}}" class="img-link"><img alt="#" class="img-responsive lazyloaded" src="{% if item.detail_thumbnail %}{{item.detail_thumbnail}}{% else %}/assets/cmswebsite/images/no-image-800x511.png{% endif %}"></a>
<div class="itemTag"></div>
<div class="rating">
<div class="hot-wid-rating-right" data-item-name="parsely">
<div class="hiding">
<h4><a href="/{{item.route}}"> {{item.item}}</a>
</h4>
</div>
<div class="product-wid-right-price clearfix">
<ins>Rs {{item.price}}</ins>
<input type="hidden" id="hdnProductRate" value="74.25">
</div>
</div>
</div>
</div>
</div>
</div>
<!-- </div> -->{% endfor %}
</div>
</div>
</div>
<!-- End -->
</div>
</section>
<style type="text/css">
#refresh{
cursor: pointer;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: 3.5rem;
font-size: 2.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
.form-group {
margin-bottom: 1rem;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
.page-body {
margin: 30px 30px;
}
legend{
border-bottom: 0px;
}
.product1{
padding: 15px 15px 0px 15px;
background: #fff;
margin: 30px 30px;
border-top: 1px solid #eee;
border-left: 1px solid #eee;
border-right: 1px solid #eee;
}
@media screen and (max-width: 992px) {
.hide123{
display: none;
}
}
.hiding h4 a{
height: 18px;
width: 260px;
overflow: hidden;
position: relative;
text-overflow: ellipsis;
white-space: nowrap;
}
.rating .hot-wid-rating-right{
padding-left: 25px;
}
.item1 .right-item{
padding: 10px 15px;
}
.rating .product-wid-right-price ins{
color: #ff5500;
}
.item1 .product-single-right img {
margin: 0 auto;
float: none;
}
.item1 .product-single-right .img-link
{
width: 55px;
float: left;
text-align: center;
display: inline-block;
border: 1px solid #ddd;
padding: 2px;
}
.item1 .product-single-right h4 {
font-size: 12px;
margin-top: 0;
}
.rating .hot-wid-rating-right{
padding-left: 15px;
}
.item1 .product-single-right h4 {
font-size: 12px;
}
legend a{
font-size: 30px;
}
.form-check-label a{
color: #157702;
}
.send-email-a-friend-button{
padding:10px 16px;
}
.form-check-label{
font-weight: normal;
}
.mandatory{
color: red;
}
.form-control {
display: block;
width: 100%;
padding: 2.625rem 1rem;
font-size: 1.3rem;
line-height: 1.5;
color: #596167;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: .125rem;
box-shadow: none;
transition: none;
}
.text-danger {
color: #f44336 !important;
display: none;
}
#response{
display: none;
margin-left: 15px;
color: black;
}
.form-control-plaintext {
display: block;
width: 100%;
padding-top: .625rem;
padding-bottom: .625rem;
margin-bottom: 0;
line-height: 1.5;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-check {
position: relative;
display: block;
padding-left: 1.25rem;
}
#item-mob{
line-height: normal;
}
#enquiryForm{
overflow: hidden;
}
.breadcrumb > li {
display: inline-block;
}
</style>
{% endblock %}
{% block script %}
<script type="text/javascript">
/*function submitUserForm() {
var response = grecaptcha.getResponse();
if(response.length == 0) {
document.getElementById('g-recaptcha-error').innerHTML = '<span style="color:red;">This field is required.</span>';
return false;
}
return true;
}
function verifyCaptcha() {
document.getElementById('g-recaptcha-error').innerHTML = '';
}*/
function verifyCallback_email(){
$('#g-recaptcha-error2').hide();
}
var email_widget, login_widget, register_widget;
var onloadCallback = function() {
if('{{catalog_settings.email_a_friend}}' == '1'){
email_widget = grecaptcha.render('captcha_email', {
'sitekey' : '{{catalog_settings.public_key}}',
'callback' : verifyCallback_email
});
}
if('{{catalog_settings.login_page}}' == '1'){
login_widget = grecaptcha.render('recaptcha_login', {
'sitekey' : '{{catalog_settings.public_key}}',
'callback' : verifyCallback_login
});
}
if('{{catalog_settings.register_page}}' == '1'){
register_widget = grecaptcha.render('recaptcha_register', {
'sitekey' : '{{catalog_settings.public_key}}',
'callback' : verifyCallback_register
});
}
}
function sendEmail() {
try{
var formData = {};
if('{{catalog_settings.email_a_friend}}' == '1'){
var private_key = '{{catalog_settings.private_key}}';
var response = grecaptcha.getResponse();
formData.captcha_response = response;
formData.private_key = private_key;
}
formData.friend_email = $('#friend_email').val();
formData.your_email = $('#your_email').val();
formData.personal_message = $('#personal_message').val();
formData.product='{{product.name}}';
formData.ismobile = 0;
$('#friendemail-error').hide();
$('#youremail-error').hide();
$('#checkbox-err').hide();
if (validate_fields(formData)) {
$.ajax({
type: 'POST',
Accept: 'application/json',
ContentType: 'application/json;charset=utf-8',
url: window.location.origin + '/api/method/ecommerce_business_store.ecommerce_business_store.api.insert_friendemail',
data: { 'data': JSON.stringify(formData) },
dataType: "json",
async: false,
headers:{
'X-Frappe-CSRF-Token':'{{csrf_token}}'
},
success: function(data) {
if('{{catalog_settings.email_a_friend}}' == '1'){
grecaptcha.reset(email_widget)
}
if (data.message) {
$('#response').show();
$("html, body").animate({ scrollTop: 0 }, "slow");
setTimeout(function() {
$('#response').hide();
}, 3000)
$('input[type="text"], textarea').val('');
$('#friend_email').val('');
}
}
})
}
}
catch(e){
var err = e.toString();
frappe.call({
method:'ecommerce_business_store.ecommerce_business_store.api.error_log',
args:{
'err':err,
'title':"cmswebsite.cmswebsite.templates.pages.emailafriend.sendEmail"
},
callback:function(data){
}
})
}
}
function validate_fields(formData) {
try{
let allowsubmit=true;
if(formData.friend_email==''){
allowsubmit=false;
$('#friendemail-error').show();
$("#friend_email").click(function() {
$("#friendemail-error").hide();
});
}
else{
if(!ValidateEmail(formData.friend_email)){
allowsubmit=false;
$('#friendemail-error').show();
$('#friend_email').keydown(function(){
$('#friendemail-error').hide();
});
}
}
if(formData.your_email==''){
allowsubmit=false;
$('#youremail-error').show();
$("#your_email").click(function() {
$("#youremail-error").hide();
});
}else{
if(!ValidateEmail(formData.your_email)){
allowsubmit=false;
$('#youremail-error').show();
$('#your_email').keydown(function(){
$('#youremail-error').hide();
});
}
}
if($('input[type=checkbox]:checked').val()==undefined){
allowsubmit=false;
$('#checkbox-err').show();
}
if('{{catalog_settings.email_a_friend}}' == '1'){
if(formData.captcha_response == "") {
allowsubmit = false;
$('#g-recaptcha-error2').show();
}
}
/* var response = grecaptcha.getResponse();
if(response.length == 0) {
document.getElementById('g-recaptcha-error').innerHTML = '<span style="color:red;">This field is required.</span>';
return false;
}
else{
return true;
}*/
return allowsubmit;
}
catch(e){
var err = e.toString();
frappe.call({
method:'ecommerce_business_store.ecommerce_business_store.api.error_log',
args:{
'err':err,
'title':"cmswebsite.cmswebsite.templates.pages.emailafriend.validate_fields"
},
callback:function(data){
}
})
}
}
</script>
{% endblock %}</pre><pre>Traceback (most recent call last):
File "/home/tridotsuser/EcommerceBooks/apps/frappe/frappe/utils/jinja.py", line 79, in render_template
return get_jenv().from_string(template).render(context)
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
File "/home/tridotsuser/EcommerceBooks/apps/cmswebsite/cmswebsite/./templates/Layout/customweb.html", line 71, in top-level template code
{% block content %} {% endblock %}{% block page_content %} {% endblock %}
File "<template>", line 31, in block "content"
File "/home/tridotsuser/EcommerceBooks/env/lib/python3.5/site-packages/jinja2/sandbox.py", line 407, in getattr
value = getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'product' is undefined
</pre>