remove vm creation to util function
This commit is contained in:
parent
fae1c7fbeb
commit
3debf34118
3 changed files with 82 additions and 118 deletions
|
@ -1,5 +1,10 @@
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
|
|
||||||
|
from datacenterlight.tasks import create_vm_task
|
||||||
|
from hosting.models import HostingOrder, HostingBill
|
||||||
|
from membership.models import StripeCustomer
|
||||||
|
from utils.forms import UserBillingAddressForm
|
||||||
|
from utils.models import BillingAddress
|
||||||
from .cms_models import CMSIntegration
|
from .cms_models import CMSIntegration
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,3 +17,57 @@ def get_cms_integration(name):
|
||||||
except CMSIntegration.DoesNotExist:
|
except CMSIntegration.DoesNotExist:
|
||||||
cms_integration = CMSIntegration.objects.get(name=name, domain=None)
|
cms_integration = CMSIntegration.objects.get(name=name, domain=None)
|
||||||
return cms_integration
|
return cms_integration
|
||||||
|
|
||||||
|
|
||||||
|
def create_vm(billing_address_data, stripe_customer_id, specs,
|
||||||
|
stripe_subscription_obj, card_details_dict, request,
|
||||||
|
vm_template_id, template, user):
|
||||||
|
billing_address = BillingAddress(
|
||||||
|
cardholder_name=billing_address_data['cardholder_name'],
|
||||||
|
street_address=billing_address_data['street_address'],
|
||||||
|
city=billing_address_data['city'],
|
||||||
|
postal_code=billing_address_data['postal_code'],
|
||||||
|
country=billing_address_data['country']
|
||||||
|
)
|
||||||
|
billing_address.save()
|
||||||
|
|
||||||
|
customer = StripeCustomer.objects.filter(id=stripe_customer_id).first()
|
||||||
|
|
||||||
|
# Create a Hosting Order with vm_id = 0, we shall set it later in
|
||||||
|
# celery task once the VM instance is up and running
|
||||||
|
order = HostingOrder.create(
|
||||||
|
price=specs['price'],
|
||||||
|
vm_id=0,
|
||||||
|
customer=customer,
|
||||||
|
billing_address=billing_address
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a Hosting Bill
|
||||||
|
HostingBill.create(customer=customer, billing_address=billing_address)
|
||||||
|
|
||||||
|
# Create Billing Address for User if he does not have one
|
||||||
|
if not customer.user.billing_addresses.count():
|
||||||
|
billing_address_data.update({
|
||||||
|
'user': customer.user.id
|
||||||
|
})
|
||||||
|
billing_address_user_form = UserBillingAddressForm(
|
||||||
|
billing_address_data
|
||||||
|
)
|
||||||
|
billing_address_user_form.is_valid()
|
||||||
|
billing_address_user_form.save()
|
||||||
|
|
||||||
|
# Associate an order with a stripe subscription
|
||||||
|
order.set_subscription_id(
|
||||||
|
stripe_subscription_obj.id, card_details_dict
|
||||||
|
)
|
||||||
|
|
||||||
|
# If the Stripe payment succeeds, set order status approved
|
||||||
|
order.set_approved()
|
||||||
|
|
||||||
|
create_vm_task.delay(vm_template_id, user, specs, template, order.id)
|
||||||
|
|
||||||
|
for session_var in ['specs', 'template', 'billing_address',
|
||||||
|
'billing_address_data',
|
||||||
|
'token', 'customer']:
|
||||||
|
if session_var in request.session:
|
||||||
|
del request.session[session_var]
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.contrib import messages
|
||||||
from django.contrib.auth import login, authenticate
|
from django.contrib.auth import login, authenticate
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.utils.translation import get_language, ugettext_lazy as _
|
from django.utils.translation import get_language, ugettext_lazy as _
|
||||||
from django.views.decorators.cache import cache_control
|
from django.views.decorators.cache import cache_control
|
||||||
|
@ -27,7 +27,7 @@ from utils.stripe_utils import StripeUtils
|
||||||
from utils.tasks import send_plain_email_task
|
from utils.tasks import send_plain_email_task
|
||||||
from .forms import ContactForm
|
from .forms import ContactForm
|
||||||
from .models import VMTemplate
|
from .models import VMTemplate
|
||||||
from .utils import get_cms_integration
|
from .utils import get_cms_integration, create_vm
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -390,8 +390,8 @@ class OrderConfirmationView(DetailView):
|
||||||
' On close of this popup, you will be redirected back to'
|
' On close of this popup, you will be redirected back to'
|
||||||
' the payment page.'))
|
' the payment page.'))
|
||||||
}
|
}
|
||||||
return HttpResponse(json.dumps(response),
|
return JsonResponse(response)
|
||||||
content_type="application/json")
|
|
||||||
card_details_dict = card_details.get('response_object')
|
card_details_dict = card_details.get('response_object')
|
||||||
cpu = specs.get('cpu')
|
cpu = specs.get('cpu')
|
||||||
memory = specs.get('memory')
|
memory = specs.get('memory')
|
||||||
|
@ -431,8 +431,7 @@ class OrderConfirmationView(DetailView):
|
||||||
' On close of this popup, you will be redirected back to'
|
' On close of this popup, you will be redirected back to'
|
||||||
' the payment page.'))
|
' the payment page.'))
|
||||||
}
|
}
|
||||||
return HttpResponse(json.dumps(response),
|
return JsonResponse(response)
|
||||||
content_type="application/json")
|
|
||||||
|
|
||||||
# Create user if the user is not logged in and if he is not already
|
# Create user if the user is not logged in and if he is not already
|
||||||
# registered
|
# registered
|
||||||
|
@ -487,53 +486,11 @@ class OrderConfirmationView(DetailView):
|
||||||
'language': get_language(),
|
'language': get_language(),
|
||||||
}
|
}
|
||||||
|
|
||||||
billing_address = BillingAddress(
|
create_vm(
|
||||||
cardholder_name=billing_address_data['cardholder_name'],
|
billing_address_data, stripe_customer_id, specs,
|
||||||
street_address=billing_address_data['street_address'],
|
stripe_subscription_obj, card_details_dict, request,
|
||||||
city=billing_address_data['city'],
|
vm_template_id, template, user
|
||||||
postal_code=billing_address_data['postal_code'],
|
|
||||||
country=billing_address_data['country']
|
|
||||||
)
|
)
|
||||||
billing_address.save()
|
|
||||||
|
|
||||||
customer = StripeCustomer.objects.filter(id=stripe_customer_id).first()
|
|
||||||
|
|
||||||
# Create a Hosting Order with vm_id = 0, we shall set it later in
|
|
||||||
# celery task once the VM instance is up and running
|
|
||||||
order = HostingOrder.create(
|
|
||||||
price=specs['price'],
|
|
||||||
vm_id=0,
|
|
||||||
customer=customer,
|
|
||||||
billing_address=billing_address
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create a Hosting Bill
|
|
||||||
HostingBill.create(customer=customer, billing_address=billing_address)
|
|
||||||
|
|
||||||
# Create Billing Address for User if he does not have one
|
|
||||||
if not customer.user.billing_addresses.count():
|
|
||||||
billing_address_data.update({
|
|
||||||
'user': customer.user.id
|
|
||||||
})
|
|
||||||
billing_address_user_form = UserBillingAddressForm(
|
|
||||||
billing_address_data)
|
|
||||||
billing_address_user_form.is_valid()
|
|
||||||
billing_address_user_form.save()
|
|
||||||
|
|
||||||
# Associate an order with a stripe subscription
|
|
||||||
order.set_subscription_id(
|
|
||||||
stripe_subscription_obj.id, card_details_dict
|
|
||||||
)
|
|
||||||
|
|
||||||
# If the Stripe payment succeeds, set order status approved
|
|
||||||
order.set_approved()
|
|
||||||
|
|
||||||
create_vm_task.delay(vm_template_id, user, specs, template, order.id)
|
|
||||||
for session_var in ['specs', 'template', 'billing_address',
|
|
||||||
'billing_address_data',
|
|
||||||
'token', 'customer']:
|
|
||||||
if session_var in request.session:
|
|
||||||
del request.session[session_var]
|
|
||||||
|
|
||||||
response = {
|
response = {
|
||||||
'status': True,
|
'status': True,
|
||||||
|
@ -549,5 +506,4 @@ class OrderConfirmationView(DetailView):
|
||||||
' it is ready.'))
|
' it is ready.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
return HttpResponse(json.dumps(response),
|
return JsonResponse(response)
|
||||||
content_type="application/json")
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import json
|
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -12,7 +11,9 @@ 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, JsonResponse
|
||||||
|
)
|
||||||
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
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
@ -31,7 +32,7 @@ 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.models import VMTemplate
|
||||||
from datacenterlight.tasks import create_vm_task
|
from datacenterlight.utils import create_vm
|
||||||
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 (
|
from opennebula_api.serializers import (
|
||||||
|
@ -44,7 +45,6 @@ from utils.forms import (
|
||||||
)
|
)
|
||||||
from utils.hosting_utils import get_vm_price
|
from utils.hosting_utils import get_vm_price
|
||||||
from utils.mailer import BaseEmail
|
from utils.mailer import BaseEmail
|
||||||
from utils.models import BillingAddress
|
|
||||||
from utils.stripe_utils import StripeUtils
|
from utils.stripe_utils import StripeUtils
|
||||||
from utils.tasks import send_plain_email_task
|
from utils.tasks import send_plain_email_task
|
||||||
from utils.views import (
|
from utils.views import (
|
||||||
|
@ -873,8 +873,8 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||||
' On close of this popup, you will be redirected back to'
|
' On close of this popup, you will be redirected back to'
|
||||||
' the payment page.'))
|
' the payment page.'))
|
||||||
}
|
}
|
||||||
return HttpResponse(json.dumps(response),
|
return JsonResponse(response)
|
||||||
content_type="application/json")
|
|
||||||
user = {
|
user = {
|
||||||
'name': self.request.user.name,
|
'name': self.request.user.name,
|
||||||
'email': self.request.user.email,
|
'email': self.request.user.email,
|
||||||
|
@ -884,55 +884,11 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||||
'language': get_language(),
|
'language': get_language(),
|
||||||
}
|
}
|
||||||
|
|
||||||
billing_address = BillingAddress(
|
create_vm(
|
||||||
cardholder_name=billing_address_data['cardholder_name'],
|
billing_address_data, stripe_customer_id, specs,
|
||||||
street_address=billing_address_data['street_address'],
|
stripe_subscription_obj, card_details_dict, request,
|
||||||
city=billing_address_data['city'],
|
vm_template_id, template, user
|
||||||
postal_code=billing_address_data['postal_code'],
|
|
||||||
country=billing_address_data['country']
|
|
||||||
)
|
)
|
||||||
billing_address.save()
|
|
||||||
|
|
||||||
customer = StripeCustomer.objects.filter(id=stripe_customer_id).first()
|
|
||||||
|
|
||||||
# Create a Hosting Order with vm_id = 0, we shall set it later in
|
|
||||||
# celery task once the VM instance is up and running
|
|
||||||
order = HostingOrder.create(
|
|
||||||
price=specs['price'],
|
|
||||||
vm_id=0,
|
|
||||||
customer=customer,
|
|
||||||
billing_address=billing_address
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create a Hosting Bill
|
|
||||||
HostingBill.create(customer=customer, billing_address=billing_address)
|
|
||||||
|
|
||||||
# Create Billing Address for User if he does not have one
|
|
||||||
if not customer.user.billing_addresses.count():
|
|
||||||
billing_address_data.update({
|
|
||||||
'user': customer.user.id
|
|
||||||
})
|
|
||||||
billing_address_user_form = UserBillingAddressForm(
|
|
||||||
billing_address_data
|
|
||||||
)
|
|
||||||
billing_address_user_form.is_valid()
|
|
||||||
billing_address_user_form.save()
|
|
||||||
|
|
||||||
# Associate an order with a stripe subscription
|
|
||||||
order.set_subscription_id(
|
|
||||||
stripe_subscription_obj.id, card_details_dict
|
|
||||||
)
|
|
||||||
|
|
||||||
# If the Stripe payment succeeds, set order status approved
|
|
||||||
order.set_approved()
|
|
||||||
|
|
||||||
create_vm_task.delay(vm_template_id, user, specs, template, order.id)
|
|
||||||
|
|
||||||
for session_var in ['specs', 'template', 'billing_address',
|
|
||||||
'billing_address_data',
|
|
||||||
'token', 'customer']:
|
|
||||||
if session_var in request.session:
|
|
||||||
del request.session[session_var]
|
|
||||||
|
|
||||||
response = {
|
response = {
|
||||||
'status': True,
|
'status': True,
|
||||||
|
@ -944,8 +900,7 @@ class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||||
' it is ready.'))
|
' it is ready.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
return HttpResponse(json.dumps(response),
|
return JsonResponse(response)
|
||||||
content_type="application/json")
|
|
||||||
|
|
||||||
|
|
||||||
class OrdersHostingListView(LoginRequiredMixin, ListView):
|
class OrdersHostingListView(LoginRequiredMixin, ListView):
|
||||||
|
@ -1128,10 +1083,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
for m in storage:
|
for m in storage:
|
||||||
pass
|
pass
|
||||||
storage.used = True
|
storage.used = True
|
||||||
return HttpResponse(
|
return JsonResponse({'text': ugettext('Terminated')})
|
||||||
json.dumps({'text': ugettext('Terminated')}),
|
|
||||||
content_type="application/json"
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
return redirect(reverse('hosting:virtual_machines'))
|
return redirect(reverse('hosting:virtual_machines'))
|
||||||
elif self.request.is_ajax():
|
elif self.request.is_ajax():
|
||||||
|
@ -1262,10 +1214,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
["%s=%s" % (k, v) for (k, v) in admin_email_body.items()]),
|
["%s=%s" % (k, v) for (k, v) in admin_email_body.items()]),
|
||||||
}
|
}
|
||||||
send_plain_email_task.delay(email_to_admin_data)
|
send_plain_email_task.delay(email_to_admin_data)
|
||||||
return HttpResponse(
|
return JsonResponse(response)
|
||||||
json.dumps(response),
|
|
||||||
content_type="application/json"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin,
|
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||||
|
|
Loading…
Reference in a new issue