diff --git a/datacenterlight/static/datacenterlight/js/main.js b/datacenterlight/static/datacenterlight/js/main.js
index ab37a68b..dd074397 100644
--- a/datacenterlight/static/datacenterlight/js/main.js
+++ b/datacenterlight/static/datacenterlight/js/main.js
@@ -155,9 +155,7 @@
function _calcPricing() {
var total = (cardPricing['cpu'].value * 5) + (2 * cardPricing['ram'].value) + (0.6 * cardPricing['storage'].value);
total = parseFloat(total.toFixed(2));
-
$("#total").text(total);
- $('input[name=total]').val(total);
}
function form_success() {
@@ -191,4 +189,4 @@
});
})
}
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/datacenterlight/tasks.py b/datacenterlight/tasks.py
index a5496d83..7d589570 100644
--- a/datacenterlight/tasks.py
+++ b/datacenterlight/tasks.py
@@ -52,7 +52,8 @@ def create_vm_task(self, vm_template_id, user, specs, template,
stripe_customer_id, billing_address_data,
billing_address_id,
charge, cc_details):
- logger.debug("Running create_vm_task on {}".format(current_task.request.hostname))
+ logger.debug(
+ "Running create_vm_task on {}".format(current_task.request.hostname))
vm_id = None
try:
final_price = specs.get('price')
@@ -144,7 +145,8 @@ def create_vm_task(self, vm_template_id, user, specs, template,
if 'pass' in user:
lang = 'en-us'
if user.get('language') is not None:
- logger.debug("Language is set to {}".format(user.get('language')))
+ logger.debug(
+ "Language is set to {}".format(user.get('language')))
lang = user.get('language')
translation.activate(lang)
# Send notification to the user as soon as VM has been booked
diff --git a/datacenterlight/templates/datacenterlight/calculator_form.html b/datacenterlight/templates/datacenterlight/calculator_form.html
index b5bac1f9..9a0fcaa3 100644
--- a/datacenterlight/templates/datacenterlight/calculator_form.html
+++ b/datacenterlight/templates/datacenterlight/calculator_form.html
@@ -77,7 +77,6 @@
{% endfor %}
-
diff --git a/datacenterlight/templates/datacenterlight/pricing.html b/datacenterlight/templates/datacenterlight/pricing.html
deleted file mode 100644
index 0724a6ce..00000000
--- a/datacenterlight/templates/datacenterlight/pricing.html
+++ /dev/null
@@ -1,96 +0,0 @@
-{% extends "datacenterlight/base.html" %}
-{% load staticfiles i18n%}
-{% get_current_language as LANGUAGE_CODE %}
-
-{% block content %}
-
-
-
-
{% trans "We are cutting down the costs significantly!" %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{% trans "Simple and affordable: Try our virtual machine with featherlight price." %}
-
-
-
{% trans "Our VMs are hosted in Glarus, Switzerland, and our website is currently running in BETA mode. If you want more information that you did not find on our website, or if your order is more detailed, or if you encounter any technical hiccups, please contact us at support@datacenterlight.ch, our team will get in touch with you asap." %}
-
-
-
-{% endblock %}
-
-
-
diff --git a/datacenterlight/tests.py b/datacenterlight/tests.py
index c34c56ba..edde2db8 100644
--- a/datacenterlight/tests.py
+++ b/datacenterlight/tests.py
@@ -12,6 +12,7 @@ from datacenterlight.models import VMTemplate
from datacenterlight.tasks import create_vm_task
from membership.models import StripeCustomer
from opennebula_api.serializers import VMTemplateSerializer
+from utils.hosting_utils import get_vm_price
from utils.models import BillingAddress
from utils.stripe_utils import StripeUtils
@@ -94,12 +95,11 @@ class CeleryTaskTestCase(TestCase):
cpu = specs.get('cpu')
memory = specs.get('memory')
disk_size = specs.get('disk_size')
- amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
- plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
- cpu=cpu,
- memory=memory,
- disk_size=disk_size)
-
+ amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
+ disk_size=disk_size)
+ plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
+ memory=memory,
+ disk_size=disk_size)
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
ram=memory,
ssd=disk_size,
diff --git a/datacenterlight/urls.py b/datacenterlight/urls.py
index 772e691d..a8d8f49d 100644
--- a/datacenterlight/urls.py
+++ b/datacenterlight/urls.py
@@ -1,7 +1,7 @@
from django.conf.urls import url
from .views import IndexView, BetaProgramView, LandingProgramView, \
- BetaAccessView, PricingView, SuccessView, \
+ BetaAccessView, SuccessView, \
PaymentOrderView, OrderConfirmationView, \
WhyDataCenterLightView, ContactUsView
@@ -15,7 +15,6 @@ urlpatterns = [
name='whydatacenterlight'),
url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'),
url(r'^landing/?$', LandingProgramView.as_view(), name='landing'),
- url(r'^pricing/?$', PricingView.as_view(), name='pricing'),
url(r'^payment/?$', PaymentOrderView.as_view(), name='payment'),
url(r'^order-confirmation/?$', OrderConfirmationView.as_view(),
name='order_confirmation'),
diff --git a/datacenterlight/views.py b/datacenterlight/views.py
index 0521ffef..a2baf717 100644
--- a/datacenterlight/views.py
+++ b/datacenterlight/views.py
@@ -4,7 +4,6 @@ from django.contrib import messages
from django.core.exceptions import ValidationError
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
@@ -13,10 +12,9 @@ from django.views.generic import FormView, CreateView, TemplateView, DetailView
from datacenterlight.tasks import create_vm_task
from hosting.models import HostingOrder
from membership.models import CustomUser, StripeCustomer
-from opennebula_api.models import OpenNebulaManager
-from opennebula_api.serializers import VirtualMachineTemplateSerializer, \
- VMTemplateSerializer
+from opennebula_api.serializers import VMTemplateSerializer
from utils.forms import BillingAddressForm
+from utils.hosting_utils import get_vm_price
from utils.mailer import BaseEmail
from utils.stripe_utils import StripeUtils
from utils.tasks import send_plain_email_task
@@ -88,56 +86,6 @@ class SuccessView(TemplateView):
return render(request, self.template_name)
-class PricingView(TemplateView):
- template_name = "datacenterlight/pricing.html"
-
- def get(self, request, *args, **kwargs):
- try:
- manager = OpenNebulaManager()
- templates = manager.get_templates()
-
- context = {
- 'templates': VirtualMachineTemplateSerializer(templates,
- many=True).data,
- }
- except:
- messages.error(request,
- 'We have a temporary problem to connect to our backend. \
- Please try again in a few minutes'
- )
- context = {
- 'error': 'connection'
- }
-
- return render(request, self.template_name, context)
-
- def post(self, request):
-
- cores = request.POST.get('cpu')
- memory = request.POST.get('ram')
- storage = request.POST.get('storage')
- price = request.POST.get('total')
-
- template_id = int(request.POST.get('config'))
- manager = OpenNebulaManager()
- template = manager.get_template(template_id)
-
- request.session['template'] = VirtualMachineTemplateSerializer(
- template).data
-
- if not request.user.is_authenticated():
- request.session['next'] = reverse('hosting:payment')
-
- request.session['specs'] = {
- 'cpu': cores,
- 'memory': memory,
- 'disk_size': storage,
- 'price': price,
- }
-
- return redirect(reverse('hosting:payment'))
-
-
class BetaAccessView(FormView):
template_name = "datacenterlight/beta_access.html"
form_class = BetaAccessForm
@@ -274,7 +222,6 @@ class IndexView(CreateView):
memory_field = forms.IntegerField(validators=[self.validate_memory])
storage = request.POST.get('storage')
storage_field = forms.IntegerField(validators=[self.validate_storage])
- price = request.POST.get('total')
template_id = int(request.POST.get('config'))
template = VMTemplate.objects.filter(
opennebula_vm_template_id=template_id).first()
@@ -334,7 +281,6 @@ class IndexView(CreateView):
'cpu': cores,
'memory': memory,
'disk_size': storage,
- 'price': price
}
this_user = {
@@ -532,12 +478,12 @@ class OrderConfirmationView(DetailView):
cpu = specs.get('cpu')
memory = specs.get('memory')
disk_size = specs.get('disk_size')
- amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
- plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
- cpu=cpu,
- memory=memory,
- disk_size=disk_size)
-
+ amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
+ disk_size=disk_size)
+ specs['price'] = amount_to_be_charged
+ plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
+ memory=memory,
+ disk_size=disk_size)
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
ram=memory,
ssd=disk_size,
diff --git a/hosting/templates/hosting/choice_ssh_keys.html b/hosting/templates/hosting/choice_ssh_keys.html
index 3a377388..87224156 100644
--- a/hosting/templates/hosting/choice_ssh_keys.html
+++ b/hosting/templates/hosting/choice_ssh_keys.html
@@ -47,20 +47,5 @@
window.location.href = '{{next_url}}';
{% endif %}
-
-
-
-
-
{%endblock%}
diff --git a/hosting/templates/hosting/user_keys.html b/hosting/templates/hosting/user_keys.html
index 1cfb880c..6810efdf 100644
--- a/hosting/templates/hosting/user_keys.html
+++ b/hosting/templates/hosting/user_keys.html
@@ -101,21 +101,5 @@
window.location.href = '{{next_url}}';
{% endif %}
-
-
-
-
-
{%endblock%}
diff --git a/hosting/views.py b/hosting/views.py
index 06f307f0..e694f55b 100644
--- a/hosting/views.py
+++ b/hosting/views.py
@@ -38,6 +38,7 @@ from utils.forms import (
BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm,
ResendActivationEmailForm
)
+from utils.hosting_utils import get_vm_price
from utils.mailer import BaseEmail
from utils.stripe_utils import StripeUtils
from utils.views import (
@@ -773,12 +774,11 @@ class OrdersHostingDetailView(LoginRequiredMixin,
cpu = specs.get('cpu')
memory = specs.get('memory')
disk_size = specs.get('disk_size')
- amount_to_be_charged = (cpu * 5) + (memory * 2) + (disk_size * 0.6)
- plan_name = "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
- cpu=cpu,
- memory=memory,
- disk_size=disk_size)
-
+ amount_to_be_charged = get_vm_price(cpu=cpu, memory=memory,
+ disk_size=disk_size)
+ plan_name = StripeUtils.get_stripe_plan_name(cpu=cpu,
+ memory=memory,
+ disk_size=disk_size)
stripe_plan_id = StripeUtils.get_stripe_plan_id(cpu=cpu,
ram=memory,
ssd=disk_size,
@@ -823,9 +823,10 @@ class OrdersHostingDetailView(LoginRequiredMixin,
'status': True,
'redirect': reverse('hosting:virtual_machines'),
'msg_title': str(_('Thank you for the order.')),
- 'msg_body': str(_('Your VM will be up and running in a few moments.'
- ' We will send you a confirmation email as soon as'
- ' it is ready.'))
+ 'msg_body': str(
+ _('Your VM will be up and running in a few moments.'
+ ' We will send you a confirmation email as soon as'
+ ' it is ready.'))
}
return HttpResponse(json.dumps(response),
@@ -922,7 +923,6 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
memory_field = forms.IntegerField(validators=[self.validate_memory])
storage = request.POST.get('storage')
storage_field = forms.IntegerField(validators=[self.validate_storage])
- price = request.POST.get('total')
template_id = int(request.POST.get('config'))
template = VMTemplate.objects.filter(
opennebula_vm_template_id=template_id).first()
@@ -954,7 +954,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
extra_tags='storage')
return HttpResponseRedirect(
reverse('datacenterlight:index') + "#order_form")
-
+ price = get_vm_price(cpu=cores, memory=memory,
+ disk_size=storage)
specs = {
'cpu': cores,
'memory': memory,
diff --git a/utils/hosting_utils.py b/utils/hosting_utils.py
index 09f81536..3c193ad7 100644
--- a/utils/hosting_utils.py
+++ b/utils/hosting_utils.py
@@ -47,3 +47,16 @@ def get_or_create_vm_detail(user, manager, vm_id):
ipv6=vm['ipv6']
)
return vm_detail_obj
+
+
+def get_vm_price(cpu, memory, disk_size):
+ """
+ A helper function that computes price of a VM from given cpu, ram and
+ ssd parameters
+
+ :param cpu: Number of cores of the VM
+ :param memory: RAM of the VM
+ :param disk_size: Disk space of the VM
+ :return: The price of the VM
+ """
+ return (cpu * 5) + (memory * 2) + (disk_size * 0.6)
diff --git a/utils/stripe_utils.py b/utils/stripe_utils.py
index f35a6b9c..98f85d62 100644
--- a/utils/stripe_utils.py
+++ b/utils/stripe_utils.py
@@ -238,7 +238,7 @@ class StripeUtils(object):
@staticmethod
def get_stripe_plan_id(cpu, ram, ssd, version, app='dcl', hdd=None):
"""
- Returns the stripe plan id string of the form
+ Returns the Stripe plan id string of the form
`dcl-v1-cpu-2-ram-5gb-ssd-10gb` based on the input parameters
:param cpu: The number of cores
@@ -256,7 +256,19 @@ class StripeUtils(object):
if hdd is not None:
dcl_plan_string = '{dcl_plan_string}-hdd-{hdd}gb'.format(
dcl_plan_string=dcl_plan_string, hdd=hdd)
- stripe_plan_id_string = '{app}-v{version}-{plan}'.format(app=app,
- version=version,
- plan=dcl_plan_string)
+ stripe_plan_id_string = '{app}-v{version}-{plan}'.format(
+ app=app,
+ version=version,
+ plan=dcl_plan_string)
return stripe_plan_id_string
+
+ @staticmethod
+ def get_stripe_plan_name(cpu, memory, disk_size):
+ """
+ Returns the Stripe plan name
+ :return:
+ """
+ return "{cpu} Cores, {memory} GB RAM, {disk_size} GB SSD".format(
+ cpu=cpu,
+ memory=memory,
+ disk_size=disk_size)