diff --git a/digitalglarus/models.py b/digitalglarus/models.py index 26ecb4ff..73e04aca 100644 --- a/digitalglarus/models.py +++ b/digitalglarus/models.py @@ -1,4 +1,5 @@ + import calendar from datetime import datetime, date, timedelta from dateutil.relativedelta import relativedelta diff --git a/digitalglarus/static/digitalglarus/js/payment.js b/digitalglarus/static/digitalglarus/js/payment.js index 3179f721..90e922b1 100644 --- a/digitalglarus/static/digitalglarus/js/payment.js +++ b/digitalglarus/static/digitalglarus/js/payment.js @@ -19,6 +19,7 @@ $( document ).ready(function() { } if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { // Only send the token to relative URLs i.e. locally. + alert("POR AQUI"); xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } } @@ -33,6 +34,7 @@ $( document ).ready(function() { function submit_payment(e){ $('#billing-form').submit(); + alert("POR AQUI2"); // $form.submit(); } @@ -42,7 +44,7 @@ $( document ).ready(function() { /* If you're using Stripe for payments */ function payWithStripe(e) { - console.log("submiting"); + console.log("submiting33"); e.preventDefault(); if (!$('.agree-terms').is(':checked')){ @@ -53,12 +55,15 @@ $( document ).ready(function() { /* Visual feedback */ $form.find('[type=submit]').html('Validating <i class="fa fa-spinner fa-pulse"></i>'); - + alert("POR AQUI3"); + console.log("submiting2"); var PublishableKey = window.stripeKey; + alert(PublishableKey); Stripe.setPublishableKey(PublishableKey); Stripe.card.createToken($form, function stripeResponseHandler(status, response) { if (response.error) { /* Visual feedback */ + alert("POR AQUI32345"); $form.find('[type=submit]').html('Try again'); /* Show Stripe errors on the form */ $form.find('.payment-errors').text(response.error.message); diff --git a/digitalglarus/templates/digitalglarus/booking_payment.html b/digitalglarus/templates/digitalglarus/booking_payment.html index 5c7cd604..f257d1d9 100644 --- a/digitalglarus/templates/digitalglarus/booking_payment.html +++ b/digitalglarus/templates/digitalglarus/booking_payment.html @@ -72,7 +72,7 @@ </div> {% if credit_card_data %} <form role="form" id="billing-form" method="post" action="{% url 'digitalglarus:booking_payment' %}" novalidate> - <h2 class="billing-head">Credit Card<a class="btn btn-primary btn-grey btn-edit" href="{% url 'digitalglarus:user_billing_address' %}">Edit</a></h2> + <h2 class="billing-head">Credit Card<a class="btn btn-primary btn-grey btn-edit" href="{% url 'digitalglarus:TermsAndConditions' %}">Edit</a></h2> <h2 class="membership-lead">Last 4: *****{{credit_card_data.last4}}</h2> <h2 class="membership-lead">Type: {{credit_card_data.cc_brand}}</h2> <input type="hidden" name="credit_card_needed" value="false"/> diff --git a/digitalglarus/templates/digitalglarus/credit_card_edit_confirmation.html b/digitalglarus/templates/digitalglarus/credit_card_edit_confirmation.html new file mode 100644 index 00000000..3fea39d2 --- /dev/null +++ b/digitalglarus/templates/digitalglarus/credit_card_edit_confirmation.html @@ -0,0 +1,113 @@ +{% extends "new_base_glarus.html" %} +{% load staticfiles cms_tags bootstrap3%} +{% block title %}crowdfunding{% endblock %} + +{% block content %} + +<style type="text/css"> + + #cancel-subscription-modal{ + margin-top:10%; + } + + #cancel-subscription-modal .modal-header{ + border-bottom: none; + } + + #cancel-subscription-modal .modal-footer{ + border-top: none; + text-align: center; + } + + .space-above { + margin-top: 10px; + } + +</style> + + <section id="price"> + <div class="signup-container"> + <div class="col-xs-12 col-sm-3 col-lg-4 text-center wow fadeInDown"> </div> + <div class="col-xs-12 col-sm-6 col-lg-4 text-center wow fadeInDown"> + + <!-- <span class="glyphicon glyphicon-user"></span> --> + <div class="payment-box"> + <h2 class="billing-head">Update your credit card information</h2> + <hr class="greyline-long"> + <h2 class="membership-lead">Do you want to update your credit card information ?</h2> + <div class="date-box"> + </div> + <!--<hr class="primary">--> + <div class="signup-form form-group row"> + + <div class="button-booking-box form-inline row"> + + <form method="POST" action=""> + {% csrf_token %} + <a class="btn btn-primary btn-grey space-above" href="{{request.META.HTTP_REFERER}}">Go back</a> + <button type="button" class="btn btn-primary btn-blue space-above" data-toggle="modal" data-target="#cancel-subscription-modal">Update my credit card</button> + + + + + <div class="modal fade bs-example-modal-sm" id="cancel-subscription-modal" tabindex="-1" role="dialog"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title">Cancel Subscription</h4> + </div> + <div class="modal-body"> + <p>Do you want to cancel your subscription?</p> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-primary btn-grey" data-dismiss="modal">No</button> + <button type="submit" class="btn btn-primary">Yes</button> + </div> + </div><!-- /.modal-content --> + </div><!-- /.modal-dialog --> + </div><!-- /.modal --> + + + </form> + + </div> + <div class="notice-box text-left"> + <p class="order-bottom-text"> + Your membership wouldn't be automatically renewed each month. + </p> + </div> + </div> + + + + + </div> + + + <div class="col-xs-12 col-sm-3 col-lg-4 text-center wow fadeInDown"> </div> + </div> + </div> + </div> + </div> + </div> + </section> + <section id="contact"> + <div class="fill"> + <div class="row" class="wow fadeInDown"> + <div class="col-lg-12 text-center wow fadeInDown"> + <div class="col-md-4 map-title"> + Digital Glarus<br> + <span class="map-caption">In der Au 7 Schwanden 8762 Switzerland + <br>info@digitalglarus.ch + <br> + (044) 534-66-22 + <p> </p> + </span> + </div> + <p> </p> + </div> + </div> + </div> + </section> +{% endblock %} \ No newline at end of file diff --git a/digitalglarus/templates/digitalglarus/new_credit_card.html b/digitalglarus/templates/digitalglarus/new_credit_card.html new file mode 100644 index 00000000..6d262cb4 --- /dev/null +++ b/digitalglarus/templates/digitalglarus/new_credit_card.html @@ -0,0 +1,347 @@ +{% extends "new_base_glarus.html" %} +{% load staticfiles bootstrap3 i18n %} +{% block content %} + +<style type="text/css"> + + .nopadding { + padding: 0 !important; + margin: 0 !important; + } + + .form-control#id_country{ + -webkit-appearance: none; + -moz-appearance: none; + background-position: right 50%; + background-repeat: no-repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=); + padding: .5em; + padding-right: 1.5em + } + + .order-bottom-text a{ + margin-left: 0px; + } +</style> + + <section id="price"> + <div class="signup-container"> + <div class="col-xs-12 col-sm-6 col-lg-8 text-center wow fadeInDown"> + <div class="payment-box"> + <h2 class="section-heading payment-head">New Credit Card</h2> + <!-- <h2 class="membership-amount">35CHF</h2> --> + <hr class="greyline-long"> + + <h2 class="membership-lead"> + Your Digital Glarus Membership enables + you to use our coworking space and it includes + 2 working days for the month you signed up. + The membership fee is a monthly subscription. + Additional day costs + 15CHF per day. More than 17 days a month it + will charge only 290CHF/month. + </h2> + {% if is_free %} + <h2 class="billing-head">Billing Adress</h2> + <div class="signup-form form-group row"> + <form role="form" id="billing-form" method="post" action="{% url 'digitalglarus:booking_payment' %}" novalidate> + {% for field in form %} + {% csrf_token %} + {% bootstrap_field field show_label=False type='fields'%} + {% endfor %} + {% bootstrap_form_errors form type='non_fields'%} + <br> + </form> + </div> + + <hr class="greyline-long"> + <br/> + <h2 class="billing-head">Your booking is FREE of charge! You can change or cancel the booking freely 7 days before the booking date.</h2> + <br/><br/> + {% else %} + <br> + <h2 class="billing-head">Credit Card Information</h2> + + + {% if credit_card_data %} + <form role="form" id="billing-form" method="post" action="{% url 'digitalglarus:booking_payment' %}" novalidate> + <h2 class="membership-lead">Last 4: *****{{last4}}</h2> + <h2 class="membership-lead">Type: {{cc_brand}}</h2> + + <input type="hidden" name="credit_card_needed" value="false"/> + </form> + + {% else %} + <form role="form" id="billing-form" method="post" action="{% url 'digitalglarus:booking_payment' %}" novalidate> + <h2 class="membership-lead">Last 4: *****{{last4}}</h2> + <h2 class="membership-lead">Type: {{cc_brand}}</h2> + <input type="hidden" name="credit_card_needed" value="false"/> + </form> + <h2 class="billing-head">Credit Card (New One)</h2> + <div class="signup-form form-group row"> + {% csrf_token %} + <form role="form" id="payment-form" novalidate> + {% csrf_token %} + <div class="row"> + <div class="col-xs-12 col-md-12"> + <div class="form-group"> + <input for="name" type="text" class="form-control" name="cardName" placeholder="Name on card" required autofocus data-stripe="name" /> + </div> + </div> + </div> + <div class="row"> + <div class="col-xs-12 col-md-12"> + <div class="form-group"> + <input type="text" class="form-control" name="cardNumber" placeholder="Valid Card Number" required data-stripe="number" /> + </div> + </div> + </div> + <div class="row"> + <div class="col-xs-6 col-md-6 nopadding"> + <label for="expMonth">EXPIRATION DATE</label><br/> + <div class="col-xs-6 col-lg-6 col-md-6"> + <div class="form-group"> + <input type="text" class="form-control" name="expMonth" placeholder="MM" required data-stripe="exp_month" /> + </div> + </div> + <div class="col-xs-6 col-lg-6 col-md-6 pl-ziro"> + <div class="form-group"> + <input type="text" class="form-control" name="expYear" placeholder="YY" required data-stripe="exp_year" /> + </div> + </div> + </div> + <div class="col-xs-4 col-md-6 pull-right"> + <div class="form-group"> + <label for="cvCode">CV CODE</label> + <input type="password" class="form-control" name="cvCode" placeholder="CV" required data-stripe="cvc" /> + </div> + </div> + + <div class="text-center"> + + </div> + </div> + <input type="checkbox" hidden="True" class="custom-control-input agree-terms" checked> + <div class="row"> + <div class="row"> + <div class="col-xs-6 col-md-6 col-xs-offset-1 col-md-offset-3"> + <button type="button" class="btn btn-primary btn-grey" data-dismiss="modal">Cancel</button> + <button class="btn btn-primary btn-md btn-blck submit-payment" type="submit">Save</button> + </div> + </div> + </div> + + + + <div class="row" style="display:none;"> + <div class="col-xs-12"> + <p class="payment-errors"></p> + </div> + </div> + {% if paymentError %} + <div class="row"> + <div class="col-xs-12"> + <p> + {% bootstrap_alert paymentError alert_type='danger' %} + </p> + </div> + </div> + + + + {% endif %} + </form> + <br> + </div> + {% endif %} + {% endif %} + </div> + </div> + + </div> + </div> + </div> + </div> + </section> + + + + <section id="contact"> + <div class="fill"> + <div class="row" class="wow fadeInDown"> + <div class="col-lg-12 text-center wow fadeInDown"> + <div class="col-md-4 map-title"> + Digital Glarus<br> + <span class="map-caption">In der Au 7 Schwanden 8762 Switzerland + <br>info@digitalglarus.ch + <br> + (044) 534-66-22 + <p> </p> + </span> + </div> + <p> </p> + </div> + </div> + </div> + </section> + +<!-- stripe key data --> +{% if stripe_key %} +<script type="text/javascript"> + (function () {window.stripeKey = "{{stripe_key}}";})(); + +</script> +{%endif%} +<script> +$( document ).ready(function() { + + $.ajaxSetup({ + beforeSend: function(xhr, settings) { + function getCookie(name) { + var cookieValue = null; + if (document.cookie && document.cookie != '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) == (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; + } + if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { + // Only send the token to relative URLs i.e. locally. + alert("POR AQUI"); + xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); + } + } + }); + + //Acept term and conditions button + + + + var submit_form_btn = $('#payment_button'); + submit_form_btn.on('click', submit_payment); + + function submit_payment(e){ + $('#billing-form').submit(); + alert("POR AQUI2"); + // $form.submit(); + } + + + var $form = $('#payment-form'); + $form.submit(payWithStripe); + + /* If you're using Stripe for payments */ + function payWithStripe(e) { + console.log("submiting"); + e.preventDefault(); + + if (!$('.agree-terms').is(':checked')){ + alert("You must accept terms and conditions."); + return; + } + + + /* Visual feedback */ + $form.find('[type=submit]').html('Validating <i class="fa fa-spinner fa-pulse"></i>'); + + var PublishableKey = window.stripeKey; + Stripe.setPublishableKey(PublishableKey); + Stripe.card.createToken($form, function stripeResponseHandler(status, response) { + if (response.error) { + /* Visual feedback */ + alert("POR AQUI3"); + $form.find('[type=submit]').html('Try again'); + /* Show Stripe errors on the form */ + $form.find('.payment-errors').text(response.error.message); + $form.find('.payment-errors').closest('.row').show(); + } else { + /* Visual feedback */ + $form.find('[type=submit]').html('Processing <i class="fa fa-spinner fa-pulse"></i>'); + /* Hide Stripe errors on the form */ + $form.find('.payment-errors').closest('.row').hide(); + $form.find('.payment-errors').text(""); + // response contains id and card, which contains additional card details + var token = response.id; + // AJAX + + //set token on a hidden input + $('#id_token').val(token); + $('#billing-form').submit(); + } + }); + } + + /* Form validation */ + $.validator.addMethod("month", function(value, element) { + return this.optional(element) || /^(01|02|03|04|05|06|07|08|09|10|11|12)$/.test(value); + }, "Please specify a valid 2-digit month."); + + $.validator.addMethod("year", function(value, element) { + return this.optional(element) || /^[0-9]{2}$/.test(value); + }, "Please specify a valid 2-digit year."); + + validator = $form.validate({ + rules: { + cardNumber: { + required: true, + creditcard: true, + digits: true + }, + expMonth: { + required: true, + month: true + }, + expYear: { + required: true, + year: true + }, + cvCode: { + required: true, + digits: true + } + }, + highlight: function(element) { + $(element).closest('.form-control').removeClass('success').addClass('error'); + }, + unhighlight: function(element) { + $(element).closest('.form-control').removeClass('error').addClass('success'); + }, + errorPlacement: function(error, element) { + $(element).closest('.form-group').append(error); + } + }); + + paymentFormReady = function() { + if ($form.find('[name=cardNumber]').hasClass("success") && + $form.find('[name=expMonth]').hasClass("success") && + $form.find('[name=expYear]').hasClass("success") && + $form.find('[name=cvCode]').val().length > 1) { + return true; + } else { + return false; + } + }; + + $form.find('[type=submit]').prop('disabled', true); + var readyInterval = setInterval(function() { + if (paymentFormReady()) { + $form.find('[type=submit]').prop('disabled', false); + clearInterval(readyInterval); + } + }, 250); + + + +}); +</script> + + + +{% endblock %} \ No newline at end of file diff --git a/digitalglarus/templates/digitalglarus/reset_password.html b/digitalglarus/templates/digitalglarus/reset_password.html index 7d701d02..f38c0fbd 100644 --- a/digitalglarus/templates/digitalglarus/reset_password.html +++ b/digitalglarus/templates/digitalglarus/reset_password.html @@ -26,7 +26,7 @@ </form> <br> <div class="notice-box"> - <p class="signup-text">Still have trouble?<a href="mailto:info@ungleich.ch" > Contact us </a>.</p> + <p class="signup-text">Still have trouble? For technical support <a href="mailto:info@ungleich.ch" > Contact us </a>.</p> </div> </div> diff --git a/digitalglarus/urls.py b/digitalglarus/urls.py index f42ec6aa..9793e8cd 100644 --- a/digitalglarus/urls.py +++ b/digitalglarus/urls.py @@ -7,17 +7,18 @@ from .views import ContactView, IndexView, AboutView, HistoryView, LoginView, Si MembershipPricingView, BookingSelectDatesView, BookingPaymentView, OrdersBookingDetailView,\ BookingOrdersListView, MembershipOrdersListView, OrdersMembershipDetailView, \ MembershipDeactivateView, MembershipDeactivateSuccessView, UserBillingAddressView, \ - MembershipReactivateView,TermsAndConditions,ValidateUser,SupportusView,Probar + MembershipReactivateView,TermsAndConditions,ValidateUser,SupportusView,Probar,TermsAndConditions2,TermsAndConditions3 # from membership.views import LoginRegistrationView urlpatterns = [ - + url(_(r'probar3/?$'),TermsAndConditions3, name='probar3'), + url(_(r'probar2/?$'),TermsAndConditions2.as_view(), name='credit_card_edit'), url(_(r'probar/?$'), Probar, name='probar'), url(_(r'login/validate/(?P<pk>\!\w+)/?$'), ValidateUser.as_view(), name='validate-login'), url(_(r'^$'), IndexView.as_view(), name='landing'), - url(_(r'terms_conditions/?$'), TermsAndConditions.as_view(), name='TermsAndConditions'), + url(_(r'terms_conditions/?$'), TermsAndConditions, name='TermsAndConditions'), url(_(r'support-us/?$'), SupportusView.as_view(), name='supportus'), url(_(r'contact/?$'), ContactView.as_view(), name='contact'), url(_(r'login/?$'), LoginView.as_view(), name='login'), diff --git a/digitalglarus/views.py b/digitalglarus/views.py index 74d50ba9..f13537b6 100644 --- a/digitalglarus/views.py +++ b/digitalglarus/views.py @@ -14,8 +14,8 @@ from djangocms_blog.models import Post from django.contrib import messages from django.http import JsonResponse from django.views.generic import View, DetailView, ListView, DeleteView - - +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render_to_response, redirect, render from .models import Supporter from .mixins import ChangeMembershipStatusMixin from utils.forms import ContactUsForm @@ -43,152 +43,13 @@ from .mixins import MembershipRequiredMixin, IsNotMemberMixin ''' class Probar(TemplateView): - template_name='digitalglarus/pinchecha.html' + template_name='digitalglarus/new_credit_card.html' model = Membership success_url = reverse_lazy('digitalglarus:probar') ''' -class Probar(TemplateView): - template_name = "digitalglarus/pinchecha.html" - success_url = reverse_lazy('digitalglarus:probar') - # success_url = reverse_lazy('digitalglarus:booking_payment') -''' - def dispatch(self, request, *args, **kwargs): - from_booking = all(field in request.session.keys() - for field in self.booking_needed_fields) - if not from_booking: - return HttpResponseRedirect(reverse('digitalglarus:booking')) - - return super(BookingPaymentView, self).dispatch(request, *args, **kwargs) - - def get_success_url(self, order_id): - return reverse('digitalglarus:booking_orders_detail', kwargs={'pk': order_id}) - - def get_form_kwargs(self): - current_billing_address = self.request.user.billing_addresses.first() - form_kwargs = super(BookingPaymentView, self).get_form_kwargs() - form_kwargs.update({ - 'initial': { - 'start_date': self.request.session.get('start_date'), - 'end_date': self.request.session.get('end_date'), - 'price': self.request.session.get('final_price'), - 'street_address': current_billing_address.street_address, - 'city': current_billing_address.city, - 'postal_code': current_billing_address.postal_code, - 'country': current_billing_address.country, - } - }) - return form_kwargs - - def get_context_data(self, *args, **kwargs): - context = super(BookingPaymentView, self).get_context_data(*args, **kwargs) - - booking_data = {key: self.request.session.get(key) - for key in self.booking_needed_fields} - user = self.request.user - last_booking_order = BookingOrder.objects.filter(customer__user=user).last() - last_membership_order = MembershipOrder.objects.filter(customer__user=user).last() - credit_card_data = last_booking_order.get_booking_cc_data() if last_booking_order \ - and last_booking_order.get_booking_cc_data() \ - else last_membership_order.get_membership_order_cc_data() - - booking_data.update({ - 'credit_card_data': credit_card_data if credit_card_data else None, - 'stripe_key': settings.STRIPE_API_PUBLIC_KEY - }) - context.update(booking_data) - return context - - def form_valid(self, form): - data = form.cleaned_data - context = self.get_context_data() - token = data.get('token') - start_date = data.get('start_date') - end_date = data.get('end_date') - is_free = context.get('is_free') - normal_price, final_price, free_days = Booking.\ - booking_price(self.request.user, start_date, end_date) - charge = None - - # if not credit_card_needed: - # Get or create stripe customer - customer = StripeCustomer.get_or_create(email=self.request.user.email, - token=token) - if not customer: - form.add_error("__all__", "Invalid credit card") - return self.render_to_response(self.get_context_data(form=form)) - - # If booking is not free, make the stripe charge - if not is_free: - # Make stripe charge to a customer - stripe_utils = StripeUtils() - charge_response = stripe_utils.make_charge(amount=final_price, - customer=customer.stripe_id) - charge = charge_response.get('response_object') - - # Check if the payment was approved - if not charge: - context.update({ - 'paymentError': charge_response.get('error'), - 'form': form - }) - return render(self.request, self.template_name, context) - - charge = charge_response.get('response_object') - - # Create Billing Address for Membership Order - billing_address = form.save() - - # Create Billing Address for User if he does not have one - if not customer.user.billing_addresses.count(): - data.update({ - 'user': customer.user.id - }) - billing_address_user_form = UserBillingAddressForm(data) - billing_address_user_form.is_valid() - billing_address_user_form.save() - - # Create Booking - booking_data = { - 'start_date': start_date, - 'end_date': end_date, - 'start_date': start_date, - 'free_days': free_days, - 'price': normal_price, - 'final_price': final_price, - } - booking = Booking.create(booking_data) - - # Create Booking order - order_data = { - 'booking': booking, - 'customer': customer, - 'billing_address': billing_address, - 'stripe_charge': charge, - 'amount': final_price, - 'original_price': normal_price, - 'special_month_price': BookingPrice.objects.last().special_month_price, - } - order = BookingOrder.create(order_data) - - context = { - 'booking': booking, - 'order': order, - 'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()) - } - - email_data = { - 'subject': 'Your booking order has been placed', - 'to': self.request.user.email, - 'context': context, - 'template_name': 'booking_order_email', - 'template_path': 'digitalglarus/emails/' - } - email = BaseEmail(**email_data) - email.send() - - return HttpResponseRedirect(self.get_success_url(order.id)) -''' +def Probar(TemplateView): + print ("hello") class ValidateUser(TemplateView): #print ("ENTRE AQUI AL MENOS Y",pk) @@ -222,8 +83,37 @@ class ValidateView(SignupViewMixin): #resp['msg'] = 0 #0 para exito #return HttpResponse(json.dumps(resp), content_type ='application/json') -class TermsAndConditions(TemplateView): - template_name ="digitalglarus/pinchecha.html" +def TermsAndConditions(request): +#template_name ="digitalglarus/new_credit_card.html" + print (request.user) + #u+Contacto.objects.filter(asesor = U.objects.get(email=request.session['user'])) + m=MembershipOrder.objects.filter(customer__user=request.user) + customer = StripeCustomer.get_or_create(email=request.user.email) + last_booking_order = BookingOrder.objects.filter(customer__user=request.user).last() + last_membership_order = MembershipOrder.objects.filter(customer__user=request.user).last() + credit_card_data = last_booking_order.get_booking_cc_data() if last_booking_order \ + and last_booking_order.get_booking_cc_data() \ + else last_membership_order.get_membership_order_cc_data() + for t in m: + print (t) + print ("Credit cad last4",credit_card_data['last4']) + print ("Brand type",credit_card_data) + resp = dict() + resp['msg'] = 0 #0 para exito + #return HttpResponse(json.dumps(resp), content_type ='application/json') + return render_to_response('digitalglarus/new_credit_card.html',{'last4':credit_card_data['last4'],'brand_type':credit_card_data['cc_brand'],'stripe_key': settings.STRIPE_API_PUBLIC_KEY}) + ''' + def get_success_url(self): + # redirect to membership orders list if user has at least one. + print (self.request.user) + print ("JNSKDJNASJDNKSJANDKJNSAKJDNKJND") + ''' +def TermsAndConditions3(request): + print ("hola hola hola hola hola") + return render_to_response('digitalglarus/new_credit_card.html',{'last4':credit_card_data['last4'],'brand_type':credit_card_data['cc_brand']}) + +class TermsAndConditions2(TemplateView): + template_name ="digitalglarus/credit_card_edit_confirmation.html" class IndexView(TemplateView):