Save order specifications in HostingOrder also
This commit is contained in:
		
					parent
					
						
							
								5851277d9a
							
						
					
				
			
			
				commit
				
					
						900f014d92
					
				
			
		
					 3 changed files with 59 additions and 3 deletions
				
			
		| 
						 | 
					@ -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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										35
									
								
								hosting/migrations/0045_auto_20180701_1631.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								hosting/migrations/0045_auto_20180701_1631.py
									
										
									
									
									
										Normal 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'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -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',)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue