Merged master into task/3701/enable_monthly_payments
This commit is contained in:
		
				commit
				
					
						fc70c30f21
					
				
			
		
					 5 changed files with 81 additions and 53 deletions
				
			
		|  | @ -1,28 +1,26 @@ | |||
| from datetime import datetime | ||||
| 
 | ||||
| from django import forms | ||||
| from django.conf import settings | ||||
| from django.contrib import messages | ||||
| from django.core.exceptions import ValidationError | ||||
| from django.core.mail import EmailMessage | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.http import HttpResponseRedirect | ||||
| from django.shortcuts import redirect | ||||
| from django.shortcuts import render | ||||
| from django.utils.translation import ugettext_lazy as _ | ||||
| from django.views.decorators.cache import cache_control | ||||
| from django.views.generic import FormView, CreateView, TemplateView, DetailView | ||||
| 
 | ||||
| from django.http import HttpResponseRedirect | ||||
| from .forms import BetaAccessForm | ||||
| from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate | ||||
| from django.contrib import messages | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.core.mail import EmailMessage | ||||
| from utils.mailer import BaseEmail | ||||
| from django.shortcuts import render | ||||
| from django.shortcuts import redirect | ||||
| from django import forms | ||||
| from django.core.exceptions import ValidationError | ||||
| from django.views.decorators.cache import cache_control | ||||
| from django.conf import settings | ||||
| from django.utils.translation import ugettext_lazy as _ | ||||
| from utils.forms import BillingAddressForm, UserBillingAddressForm | ||||
| from utils.models import BillingAddress | ||||
| from hosting.models import HostingOrder, HostingBill | ||||
| from utils.stripe_utils import StripeUtils | ||||
| from datetime import datetime | ||||
| from membership.models import CustomUser, StripeCustomer | ||||
| from opennebula_api.models import OpenNebulaManager | ||||
| from opennebula_api.serializers import VirtualMachineTemplateSerializer, VirtualMachineSerializer, VMTemplateSerializer | ||||
| from utils.forms import BillingAddressForm, UserBillingAddressForm | ||||
| from utils.mailer import BaseEmail | ||||
| from utils.models import BillingAddress | ||||
| from utils.stripe_utils import StripeUtils | ||||
| from .forms import BetaAccessForm | ||||
| from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate | ||||
| 
 | ||||
| 
 | ||||
| class LandingProgramView(TemplateView): | ||||
|  | @ -440,6 +438,11 @@ class OrderConfirmationView(DetailView): | |||
|         stripe_utils = StripeUtils() | ||||
|         card_details = stripe_utils.get_card_details( | ||||
|             customer.stripe_id, request.session.get('token')) | ||||
|         if not card_details.get('response_object') and not card_details.get('paid'): | ||||
|             msg = card_details.get('error') | ||||
|             messages.add_message(self.request, messages.ERROR, msg, extra_tags='failed_payment') | ||||
|             return HttpResponseRedirect(reverse('datacenterlight:payment') + '#payment_error') | ||||
| 
 | ||||
|         context = { | ||||
|             'site_url': reverse('datacenterlight:index'), | ||||
|             'cc_last4': card_details.get('response_object').get('last4'), | ||||
|  |  | |||
|  | @ -557,6 +557,10 @@ a.unlink:hover { | |||
|     border-radius: 3px; | ||||
|     padding: 5px; | ||||
| } | ||||
| .card-warning-error { | ||||
|     border: 1px solid #EB4D5C; | ||||
|     color: #EB4D5C; | ||||
| } | ||||
| 
 | ||||
| .card-warning-addtional-margin { | ||||
|     margin-top: 15px; | ||||
|  |  | |||
|  | @ -59,7 +59,6 @@ | |||
|                         {% csrf_token %} | ||||
|                         {% bootstrap_field field show_label=False type='fields'%} | ||||
|                         {% endfor %} | ||||
|                         {% bootstrap_form_errors form type='non_fields'%} | ||||
|                     </form> | ||||
|                 </div> | ||||
|                 <div class="col-xs-12 col-sm-7 col-md-6 creditcard-box dcl-creditcard"> | ||||
|  | @ -86,13 +85,29 @@ | |||
|                             </form> | ||||
|                             <div class="row"> | ||||
|                                 <div class="col-xs-12"> | ||||
|                                     <p class="card-warning-content card-warning-addtional-margin"> | ||||
|                                         {% blocktrans %} | ||||
|                                         You are not making any payment yet. After submitting your card | ||||
|                                         information, you will be taken to the Confirm Order Page. | ||||
|                                         {% endblocktrans %} | ||||
|                                     </p> | ||||
|                                 </div> | ||||
|                                         {% if not messages and not form.non_field_errors %} | ||||
|                                             <p class="card-warning-content card-warning-addtional-margin"> | ||||
|                                                 {% blocktrans %} | ||||
|                                                 You are not making any payment yet. After submitting your card | ||||
|                                                 information, you will be taken to the Confirm Order Page. | ||||
|                                                 {% endblocktrans %} | ||||
|                                             </p> | ||||
|                                         {% endif %} | ||||
|                                         <div id='payment_error'> | ||||
|                                             {% for message in messages %} | ||||
|                                                 {% if 'failed_payment' or 'make_charge_error' in message.tags %} | ||||
|                                                  <ul class="list-unstyled"><li> | ||||
|                                                      <p class="card-warning-content card-warning-error">{{ message|safe }}</p> | ||||
|                                                 </li></ul> | ||||
|                                                 {% endif %} | ||||
|                                             {% endfor %} | ||||
|                                             {% for error in form.non_field_errors %} | ||||
|                                                 <p class="card-warning-content card-warning-error"> | ||||
|                                                     {{ error|escape }} | ||||
|                                                 </p> | ||||
|                                             {% endfor %} | ||||
|                                         </div> | ||||
|                                     </div> | ||||
|                                 <div class="col-xs-12"> | ||||
|                                     <div class="col-xs-6 pull-right"> | ||||
|                                         <button id="payment_button_with_creditcard" class="btn btn-success stripe-payment-btn" | ||||
|  | @ -130,12 +145,29 @@ | |||
|                                 <div id="card-errors" role="alert"></div> | ||||
|                                 <div class="row"> | ||||
|                                     <div class="col-xs-12"> | ||||
|                                         <p class="card-warning-content"> | ||||
|                                             {% blocktrans %} | ||||
|                                             You are not making any payment yet. After submitting your card | ||||
|                                             information, you will be taken to the Confirm Order Page. | ||||
|                                             {% endblocktrans %} | ||||
|                                         </p> | ||||
|                                         {% if not messages and not form.non_field_errors %} | ||||
|                                             <p class="card-warning-content"> | ||||
|                                                 {% blocktrans %} | ||||
|                                                 You are not making any payment yet. After submitting your card | ||||
|                                                 information, you will be taken to the Confirm Order Page. | ||||
|                                                 {% endblocktrans %} | ||||
|                                             </p> | ||||
|                                         {% endif %} | ||||
|                                         <div id='payment_error'> | ||||
|                                             {% for message in messages %} | ||||
|                                                 {% if 'failed_payment' or 'make_charge_error' in message.tags %} | ||||
|                                                  <ul class="list-unstyled"><li> | ||||
|                                                      <p class="card-warning-content card-warning-error">{{ message|safe }}</p> | ||||
|                                                 </li></ul> | ||||
|                                                 {% endif %} | ||||
|                                             {% endfor %} | ||||
| 
 | ||||
|                                             {% for error in form.non_field_errors %} | ||||
|                                                 <p class="card-warning-content card-warning-error"> | ||||
|                                                     {{ error|escape }} | ||||
|                                                 </p> | ||||
|                                             {% endfor %} | ||||
|                                         </div> | ||||
|                                     </div> | ||||
|                                     <div class="col-xs-12"> | ||||
|                                         <div class="col-xs-6 pull-right"> | ||||
|  | @ -150,15 +182,6 @@ | |||
|                                         <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> | ||||
| 
 | ||||
|                             {% endif %} | ||||
|  |  | |||
|  | @ -556,8 +556,9 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
|             customer = StripeCustomer.get_or_create(email=owner.email, | ||||
|                                                     token=token) | ||||
|             if not customer: | ||||
|                 form.add_error("__all__", "Invalid credit card") | ||||
|                 return self.render_to_response(self.get_context_data(form=form)) | ||||
|                 msg = _("Invalid credit card") | ||||
|                 messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') | ||||
|                 return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') | ||||
| 
 | ||||
|             # Create Billing Address | ||||
|             billing_address = form.save() | ||||
|  | @ -566,15 +567,12 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
|             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(request, self.template_name, context) | ||||
|             if not charge_response.get('response_object') and not charge_response.get('paid'): | ||||
|                 msg = charge_response.get('error') | ||||
|                 messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') | ||||
|                 return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') | ||||
| 
 | ||||
|             charge = charge_response.get('response_object') | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ def handleStripeError(f): | |||
|             'error': None | ||||
|         } | ||||
| 
 | ||||
|         common_message = "Currently its not possible to make payments." | ||||
|         common_message = "Currently it's not possible to make payments." | ||||
|         try: | ||||
|             response_object = f(*args, **kwargs) | ||||
|             response = { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue