Merge master into task/3747/multiple_cards_support

This commit is contained in:
PCoder 2018-07-03 21:29:04 +02:00
commit 6d2b011925
14 changed files with 371 additions and 153 deletions

View file

@ -1,4 +1,3 @@
import json
import logging
import uuid
from datetime import datetime
@ -12,14 +11,15 @@ from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import ValidationError
from django.core.files.base import ContentFile
from django.core.urlresolvers import reverse_lazy, reverse
from django.http import Http404, HttpResponseRedirect, HttpResponse
from django.http import (
Http404, HttpResponseRedirect, HttpResponse, JsonResponse
)
from django.shortcuts import redirect, render
from django.utils.decorators import method_decorator
from django.utils.html import escape
from django.utils.http import urlsafe_base64_decode
from django.utils.safestring import mark_safe
from django.utils.translation import get_language, ugettext_lazy as _
from django.utils.translation import ugettext
from django.utils.decorators import method_decorator
from django.views.decorators.cache import never_cache
from django.views.generic import (
View, CreateView, FormView, ListView, DetailView, DeleteView,
@ -32,8 +32,7 @@ from stored_messages.models import Message
from stored_messages.settings import stored_messages_settings
from datacenterlight.models import VMTemplate, VMPricing
from datacenterlight.tasks import create_vm_task
from datacenterlight.utils import get_cms_integration
from datacenterlight.utils import create_vm, get_cms_integration
from hosting.models import UserCardDetail
from membership.models import CustomUser, StripeCustomer
from opennebula_api.models import OpenNebulaManager
@ -580,6 +579,7 @@ class SettingsView(LoginRequiredMixin, FormView):
def get_context_data(self, **kwargs):
context = super(SettingsView, self).get_context_data(**kwargs)
# Get user
user = self.request.user
stripe_customer = None
if hasattr(user, 'stripecustomer'):
@ -724,6 +724,7 @@ class PaymentVMView(LoginRequiredMixin, FormView):
def get_context_data(self, **kwargs):
context = super(PaymentVMView, self).get_context_data(**kwargs)
# Get user
user = self.request.user
if hasattr(user, 'stripecustomer'):
stripe_customer = user.stripecustomer
@ -733,8 +734,11 @@ class PaymentVMView(LoginRequiredMixin, FormView):
stripe_customer=stripe_customer
)
context.update({
'stripe_key': settings.STRIPE_API_PUBLIC_KEY,
'vm_pricing': VMPricing.get_vm_pricing_by_name(
self.request.session.get('specs', {}).get('pricing_name')
),
'cards_list': cards_list,
'stripe_key': settings.STRIPE_API_PUBLIC_KEY
})
return context
@ -925,6 +929,10 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
context['cc_last4'] = card_detail.last4
context['cc_brand'] = card_detail.brand
context['site_url'] = reverse('hosting:create_virtual_machine')
context['cc_last4'] = card_details.get('response_object').get(
'last4')
context['cc_brand'] = card_details.get('response_object').get(
'cc_brand')
context['vm'] = self.request.session.get('specs')
return context
@ -1066,9 +1074,8 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
' the payment page.')
)
}
return HttpResponse(
json.dumps(response), content_type="application/json"
)
return JsonResponse(response)
if 'token' in request.session:
ucd = UserCardDetail.get_or_create_user_card_detail(
stripe_customer=self.request.user.stripecustomer,
@ -1086,15 +1093,12 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
'request_host': request.get_host(),
'language': get_language(),
}
create_vm_task.delay(vm_template_id, user, specs, template,
stripe_customer_id, billing_address_data,
stripe_subscription_obj.id, card_details_dict)
for session_var in ['specs', 'template', 'billing_address',
'billing_address_data', 'card_id',
'token', 'customer']:
if session_var in request.session:
del request.session[session_var]
create_vm(
billing_address_data, stripe_customer_id, specs,
stripe_subscription_obj, card_details_dict, request,
vm_template_id, template, user
)
response = {
'status': True,
@ -1106,8 +1110,7 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
' it is ready.'))
}
return HttpResponse(json.dumps(response),
content_type="application/json")
return JsonResponse(response)
class OrdersHostingListView(LoginRequiredMixin, ListView):
@ -1318,10 +1321,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
for m in storage:
pass
storage.used = True
return HttpResponse(
json.dumps({'text': ugettext('Terminated')}),
content_type="application/json"
)
return JsonResponse({'text': ugettext('Terminated')})
else:
return redirect(reverse('hosting:virtual_machines'))
elif self.request.is_ajax():
@ -1453,10 +1453,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
["%s=%s" % (k, v) for (k, v) in admin_email_body.items()]),
}
send_plain_email_task.delay(email_to_admin_data)
return HttpResponse(
json.dumps(response),
content_type="application/json"
)
return JsonResponse(response)
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin,