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.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 hosting.models import HostingOrder, HostingBill | ||||||
|  | from utils.stripe_utils import StripeUtils | ||||||
|  | from datetime import datetime | ||||||
| from membership.models import CustomUser, StripeCustomer | from membership.models import CustomUser, StripeCustomer | ||||||
| from opennebula_api.models import OpenNebulaManager | from opennebula_api.models import OpenNebulaManager | ||||||
| from opennebula_api.serializers import VirtualMachineTemplateSerializer, VirtualMachineSerializer, VMTemplateSerializer | 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): | class LandingProgramView(TemplateView): | ||||||
|  | @ -440,6 +438,11 @@ class OrderConfirmationView(DetailView): | ||||||
|         stripe_utils = StripeUtils() |         stripe_utils = StripeUtils() | ||||||
|         card_details = stripe_utils.get_card_details( |         card_details = stripe_utils.get_card_details( | ||||||
|             customer.stripe_id, request.session.get('token')) |             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 = { |         context = { | ||||||
|             'site_url': reverse('datacenterlight:index'), |             'site_url': reverse('datacenterlight:index'), | ||||||
|             'cc_last4': card_details.get('response_object').get('last4'), |             'cc_last4': card_details.get('response_object').get('last4'), | ||||||
|  |  | ||||||
|  | @ -557,6 +557,10 @@ a.unlink:hover { | ||||||
|     border-radius: 3px; |     border-radius: 3px; | ||||||
|     padding: 5px; |     padding: 5px; | ||||||
| } | } | ||||||
|  | .card-warning-error { | ||||||
|  |     border: 1px solid #EB4D5C; | ||||||
|  |     color: #EB4D5C; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| .card-warning-addtional-margin { | .card-warning-addtional-margin { | ||||||
|     margin-top: 15px; |     margin-top: 15px; | ||||||
|  |  | ||||||
|  | @ -59,7 +59,6 @@ | ||||||
|                         {% csrf_token %} |                         {% csrf_token %} | ||||||
|                         {% bootstrap_field field show_label=False type='fields'%} |                         {% bootstrap_field field show_label=False type='fields'%} | ||||||
|                         {% endfor %} |                         {% endfor %} | ||||||
|                         {% bootstrap_form_errors form type='non_fields'%} |  | ||||||
|                     </form> |                     </form> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="col-xs-12 col-sm-7 col-md-6 creditcard-box dcl-creditcard"> |                 <div class="col-xs-12 col-sm-7 col-md-6 creditcard-box dcl-creditcard"> | ||||||
|  | @ -86,13 +85,29 @@ | ||||||
|                             </form> |                             </form> | ||||||
|                             <div class="row"> |                             <div class="row"> | ||||||
|                                 <div class="col-xs-12"> |                                 <div class="col-xs-12"> | ||||||
|                                     <p class="card-warning-content card-warning-addtional-margin"> |                                         {% if not messages and not form.non_field_errors %} | ||||||
|                                         {% blocktrans %} |                                             <p class="card-warning-content card-warning-addtional-margin"> | ||||||
|                                         You are not making any payment yet. After submitting your card |                                                 {% blocktrans %} | ||||||
|                                         information, you will be taken to the Confirm Order Page. |                                                 You are not making any payment yet. After submitting your card | ||||||
|                                         {% endblocktrans %} |                                                 information, you will be taken to the Confirm Order Page. | ||||||
|                                     </p> |                                                 {% endblocktrans %} | ||||||
|                                 </div> |                                             </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-12"> | ||||||
|                                     <div class="col-xs-6 pull-right"> |                                     <div class="col-xs-6 pull-right"> | ||||||
|                                         <button id="payment_button_with_creditcard" class="btn btn-success stripe-payment-btn" |                                         <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 id="card-errors" role="alert"></div> | ||||||
|                                 <div class="row"> |                                 <div class="row"> | ||||||
|                                     <div class="col-xs-12"> |                                     <div class="col-xs-12"> | ||||||
|                                         <p class="card-warning-content"> |                                         {% if not messages and not form.non_field_errors %} | ||||||
|                                             {% blocktrans %} |                                             <p class="card-warning-content"> | ||||||
|                                             You are not making any payment yet. After submitting your card |                                                 {% blocktrans %} | ||||||
|                                             information, you will be taken to the Confirm Order Page. |                                                 You are not making any payment yet. After submitting your card | ||||||
|                                             {% endblocktrans %} |                                                 information, you will be taken to the Confirm Order Page. | ||||||
|                                         </p> |                                                 {% 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> | ||||||
|                                     <div class="col-xs-12"> |                                     <div class="col-xs-12"> | ||||||
|                                         <div class="col-xs-6 pull-right"> |                                         <div class="col-xs-6 pull-right"> | ||||||
|  | @ -150,15 +182,6 @@ | ||||||
|                                         <p class="payment-errors"></p> |                                         <p class="payment-errors"></p> | ||||||
|                                     </div> |                                     </div> | ||||||
|                                 </div> |                                 </div> | ||||||
|                                 {% if paymentError %} |  | ||||||
|                                 <div class="row"> |  | ||||||
|                                     <div class="col-xs-12"> |  | ||||||
|                                         <p> |  | ||||||
|                                             {% bootstrap_alert paymentError alert_type='danger' %} |  | ||||||
|                                         </p> |  | ||||||
|                                     </div> |  | ||||||
|                                 </div> |  | ||||||
|                                 {% endif %} |  | ||||||
|                             </form> |                             </form> | ||||||
| 
 | 
 | ||||||
|                             {% endif %} |                             {% endif %} | ||||||
|  |  | ||||||
|  | @ -556,8 +556,9 @@ class PaymentVMView(LoginRequiredMixin, FormView): | ||||||
|             customer = StripeCustomer.get_or_create(email=owner.email, |             customer = StripeCustomer.get_or_create(email=owner.email, | ||||||
|                                                     token=token) |                                                     token=token) | ||||||
|             if not customer: |             if not customer: | ||||||
|                 form.add_error("__all__", "Invalid credit card") |                 msg = _("Invalid credit card") | ||||||
|                 return self.render_to_response(self.get_context_data(form=form)) |                 messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') | ||||||
|  |                 return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') | ||||||
| 
 | 
 | ||||||
|             # Create Billing Address |             # Create Billing Address | ||||||
|             billing_address = form.save() |             billing_address = form.save() | ||||||
|  | @ -566,15 +567,12 @@ class PaymentVMView(LoginRequiredMixin, FormView): | ||||||
|             stripe_utils = StripeUtils() |             stripe_utils = StripeUtils() | ||||||
|             charge_response = stripe_utils.make_charge(amount=final_price, |             charge_response = stripe_utils.make_charge(amount=final_price, | ||||||
|                                                        customer=customer.stripe_id) |                                                        customer=customer.stripe_id) | ||||||
|             charge = charge_response.get('response_object') |  | ||||||
| 
 | 
 | ||||||
|             # Check if the payment was approved |             # Check if the payment was approved | ||||||
|             if not charge: |             if not charge_response.get('response_object') and not charge_response.get('paid'): | ||||||
|                 context.update({ |                 msg = charge_response.get('error') | ||||||
|                     'paymentError': charge_response.get('error'), |                 messages.add_message(self.request, messages.ERROR, msg, extra_tags='make_charge_error') | ||||||
|                     'form': form |                 return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error') | ||||||
|                 }) |  | ||||||
|                 return render(request, self.template_name, context) |  | ||||||
| 
 | 
 | ||||||
|             charge = charge_response.get('response_object') |             charge = charge_response.get('response_object') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ def handleStripeError(f): | ||||||
|             'error': None |             'error': None | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         common_message = "Currently its not possible to make payments." |         common_message = "Currently it's not possible to make payments." | ||||||
|         try: |         try: | ||||||
|             response_object = f(*args, **kwargs) |             response_object = f(*args, **kwargs) | ||||||
|             response = { |             response = { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue