Save order specifications in HostingOrder also

This commit is contained in:
PCoder 2018-07-01 18:33:10 +02:00
parent 5851277d9a
commit 900f014d92
3 changed files with 59 additions and 3 deletions

View file

@ -1,12 +1,12 @@
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from datacenterlight.tasks import create_vm_task from datacenterlight.tasks import create_vm_task
from hosting.models import HostingOrder, HostingBill from hosting.models import HostingOrder, HostingBill, OrderSpecifications
from membership.models import StripeCustomer from membership.models import StripeCustomer
from utils.forms import UserBillingAddressForm from utils.forms import UserBillingAddressForm
from utils.models import BillingAddress from utils.models import BillingAddress
from .cms_models import CMSIntegration from .cms_models import CMSIntegration
from .models import VMPricing from .models import VMPricing, VMTemplate
def get_cms_integration(name): def get_cms_integration(name):
@ -53,6 +53,13 @@ def create_vm(billing_address_data, stripe_customer_id, specs,
vm_pricing=vm_pricing vm_pricing=vm_pricing
) )
order_specs_obj, obj_created = OrderSpecifications.objects.get_or_create(
vm_template=VMTemplate.objects.get(vm_template_id),
cores=specs['cpu'], memory=specs['memory'], ssd_size=specs['disk_size']
)
order.order_specs = order_specs_obj
order.save()
# Create a Hosting Bill # Create a Hosting Bill
HostingBill.create(customer=customer, billing_address=billing_address) HostingBill.create(customer=customer, billing_address=billing_address)

View file

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2018-07-01 16:31
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
import utils.mixins
class Migration(migrations.Migration):
dependencies = [
('datacenterlight', '0024_dclcalculatorpluginmodel_vm_templates_to_show'),
('hosting', '0044_hostingorder_vm_pricing'),
]
operations = [
migrations.CreateModel(
name='OrderSpecifications',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cores', models.IntegerField(default=0)),
('memory', models.IntegerField(default=0)),
('hdd_size', models.IntegerField(default=0)),
('ssd_size', models.IntegerField(default=0)),
('vm_template', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='datacenterlight.VMTemplate')),
],
bases=(utils.mixins.AssignPermissionsMixin, models.Model),
),
migrations.AddField(
model_name='hostingorder',
name='order_specs',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hosting.OrderSpecifications'),
),
]

View file

@ -7,7 +7,7 @@ from django.utils import timezone
from django.utils.functional import cached_property from django.utils.functional import cached_property
from Crypto.PublicKey import RSA from Crypto.PublicKey import RSA
from datacenterlight.models import VMPricing from datacenterlight.models import VMPricing, VMTemplate
from membership.models import StripeCustomer, CustomUser from membership.models import StripeCustomer, CustomUser
from utils.models import BillingAddress from utils.models import BillingAddress
from utils.mixins import AssignPermissionsMixin from utils.mixins import AssignPermissionsMixin
@ -41,6 +41,19 @@ class HostingPlan(models.Model):
return price return price
class OrderSpecifications(AssignPermissionsMixin, models.Model):
vm_template = models.ForeignKey(VMTemplate, blank=True, null=True)
cores = models.IntegerField(default=0)
memory = models.IntegerField(default=0)
hdd_size = models.IntegerField(default=0)
ssd_size = models.IntegerField(default=0)
def __str__(self):
return "%s - %s cores, %s GB RAM, %s GB SSD" % (
self.vm_template.name, self.cores, self.memory, self.ssd_size
)
class HostingOrder(AssignPermissionsMixin, models.Model): class HostingOrder(AssignPermissionsMixin, models.Model):
ORDER_APPROVED_STATUS = 'Approved' ORDER_APPROVED_STATUS = 'Approved'
ORDER_DECLINED_STATUS = 'Declined' ORDER_DECLINED_STATUS = 'Declined'
@ -56,6 +69,7 @@ class HostingOrder(AssignPermissionsMixin, models.Model):
price = models.FloatField() price = models.FloatField()
subscription_id = models.CharField(max_length=100, null=True) subscription_id = models.CharField(max_length=100, null=True)
vm_pricing = models.ForeignKey(VMPricing) vm_pricing = models.ForeignKey(VMPricing)
order_specs = models.ForeignKey(OrderSpecifications, null=True, blank=True)
permissions = ('view_hostingorder',) permissions = ('view_hostingorder',)