Add functionality to save UserCardDetail
This commit is contained in:
		
					parent
					
						
							
								f71c8e553d
							
						
					
				
			
			
				commit
				
					
						6420a9869b
					
				
			
		
					 1 changed files with 36 additions and 11 deletions
				
			
		|  | @ -12,7 +12,6 @@ from django.contrib.auth.tokens import default_token_generator | ||||||
| from django.core.exceptions import ValidationError | from django.core.exceptions import ValidationError | ||||||
| from django.core.files.base import ContentFile | from django.core.files.base import ContentFile | ||||||
| from django.core.urlresolvers import reverse_lazy, reverse | from django.core.urlresolvers import reverse_lazy, reverse | ||||||
| 
 |  | ||||||
| from django.http import Http404, HttpResponseRedirect, HttpResponse | from django.http import Http404, HttpResponseRedirect, HttpResponse | ||||||
| from django.shortcuts import redirect, render | from django.shortcuts import redirect, render | ||||||
| from django.utils.http import urlsafe_base64_decode | from django.utils.http import urlsafe_base64_decode | ||||||
|  | @ -29,6 +28,7 @@ from stored_messages.api import mark_read | ||||||
| from stored_messages.models import Message | from stored_messages.models import Message | ||||||
| from stored_messages.settings import stored_messages_settings | from stored_messages.settings import stored_messages_settings | ||||||
| 
 | 
 | ||||||
|  | from datacenterlight.models import VMTemplate | ||||||
| from datacenterlight.tasks import create_vm_task | from datacenterlight.tasks import create_vm_task | ||||||
| from membership.models import CustomUser, StripeCustomer | from membership.models import CustomUser, StripeCustomer | ||||||
| from opennebula_api.models import OpenNebulaManager | from opennebula_api.models import OpenNebulaManager | ||||||
|  | @ -49,9 +49,9 @@ from .forms import HostingUserSignupForm, HostingUserLoginForm, \ | ||||||
|     UserHostingKeyForm, generate_ssh_key_name |     UserHostingKeyForm, generate_ssh_key_name | ||||||
| from .mixins import ProcessVMSelectionMixin | from .mixins import ProcessVMSelectionMixin | ||||||
| from .models import ( | from .models import ( | ||||||
|     HostingOrder, HostingBill, HostingPlan, UserHostingKey, VMDetail |     HostingOrder, HostingBill, HostingPlan, UserHostingKey, VMDetail, | ||||||
|  |     UserCardDetail | ||||||
| ) | ) | ||||||
| from datacenterlight.models import VMTemplate |  | ||||||
| 
 | 
 | ||||||
| logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||||
| 
 | 
 | ||||||
|  | @ -569,14 +569,39 @@ class SettingsView(LoginRequiredMixin, FormView): | ||||||
|     def post(self, request, *args, **kwargs): |     def post(self, request, *args, **kwargs): | ||||||
|         form = self.get_form() |         form = self.get_form() | ||||||
|         if form.is_valid(): |         if form.is_valid(): | ||||||
|             billing_address_data = form.cleaned_data |             if 'billing-form' in request.POST: | ||||||
|             billing_address_data.update({ |                 billing_address_data = form.cleaned_data | ||||||
|                 'user': self.request.user.id |                 billing_address_data.update({ | ||||||
|             }) |                     'user': self.request.user.id | ||||||
|             billing_address_user_form = UserBillingAddressForm( |                 }) | ||||||
|                 instance=self.request.user.billing_addresses.first(), |                 billing_address_user_form = UserBillingAddressForm( | ||||||
|                 data=billing_address_data) |                     instance=self.request.user.billing_addresses.first(), | ||||||
|             billing_address_user_form.save() |                     data=billing_address_data) | ||||||
|  |                 billing_address_user_form.save() | ||||||
|  |             else: | ||||||
|  |                 token = form.cleaned_data.get('token') | ||||||
|  |                 stripe_customer_id = StripeCustomer.create_stripe_api_customer( | ||||||
|  |                     email=self.request.user.email, | ||||||
|  |                     token=token, | ||||||
|  |                     customer_name=self.request.user.name | ||||||
|  |                 ) | ||||||
|  |                 if stripe_customer_id is None: | ||||||
|  |                     form.add_error("__all__", _("Invalid credit card")) | ||||||
|  |                 else: | ||||||
|  |                     stripe_utils = StripeUtils() | ||||||
|  |                     card_details = stripe_utils.get_card_details( | ||||||
|  |                         stripe_customer_id, token | ||||||
|  |                     ) | ||||||
|  |                     if not card_details.get('response_object'): | ||||||
|  |                         msg = card_details.get('error') | ||||||
|  |                         form.add_error("__all__", msg) | ||||||
|  |                         return self.render_to_response(self.get_context_data()) | ||||||
|  |                     UserCardDetail.objects.create( | ||||||
|  |                         user=request.user, | ||||||
|  |                         stripe_customer_id=stripe_customer_id, | ||||||
|  |                         last4=card_details.get('response_object').get('last4'), | ||||||
|  |                         brand=card_details.get('response_object').get('brand') | ||||||
|  |                     ) | ||||||
|             return self.render_to_response(self.get_context_data()) |             return self.render_to_response(self.get_context_data()) | ||||||
|         else: |         else: | ||||||
|             billing_address_data = form.cleaned_data |             billing_address_data = form.cleaned_data | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue