Refactor handling post for settings card input form

This commit is contained in:
M.Ravi 2017-10-15 23:37:01 +02:00
parent a3ce43fd53
commit 74a1f82c30

View file

@ -580,27 +580,39 @@ class SettingsView(LoginRequiredMixin, FormView):
billing_address_user_form.save() billing_address_user_form.save()
else: else:
token = form.cleaned_data.get('token') token = form.cleaned_data.get('token')
stripe_customer_id = StripeCustomer.create_stripe_api_customer( stripe_utils = StripeUtils()
email=self.request.user.email, card_details = stripe_utils.get_cards_details_from_token(
token=token, token
customer_name=self.request.user.name
) )
if stripe_customer_id is None: if not card_details.get('response_object'):
form.add_error("__all__", _("Invalid credit card")) form.add_error("__all__", card_details.get('error'))
else: return self.render_to_response(self.get_context_data())
stripe_utils = StripeUtils() stripe_customer = StripeCustomer.get_or_create(
card_details = stripe_utils.get_card_details( email=request.user.email, token=token
stripe_customer_id, token )
card_details_response = card_details['response_object']
try:
UserCardDetail.objects.get(
stripe_customer=stripe_customer,
fingerprint=card_details_response['fingerprint'],
exp_month=card_details_response['exp_month'],
exp_year=card_details_response['exp_year']
) )
if not card_details.get('response_object'): form.add_error(
msg = card_details.get('error') "__all__",
form.add_error("__all__", msg) _('You seem to have already added this card')
return self.render_to_response(self.get_context_data()) )
except UserCardDetail.DoesNotExist:
UserCardDetail.objects.create( UserCardDetail.objects.create(
user=request.user, stripe_customer=stripe_customer,
stripe_customer_id=stripe_customer_id, last4=card_details_response['last4'],
last4=card_details.get('response_object').get('last4'), brand=card_details_response['brand'],
brand=card_details.get('response_object').get('brand') fingerprint=card_details_response['fingerprint'],
exp_month=card_details_response['exp_month'],
exp_year=card_details_response['exp_year']
)
stripe_utils.add_card_to_stripe_customer(
stripe_customer.stripe_id, token
) )
return self.render_to_response(self.get_context_data()) return self.render_to_response(self.get_context_data())
else: else: