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>