This commit is contained in:
Nico Schottelius 2020-08-04 18:56:36 +02:00
parent d2bd6ba200
commit 9b00ef11fb
3 changed files with 33 additions and 4 deletions

View file

@ -12,9 +12,17 @@ from django.template.loader import render_to_string
from uncloud_pay.models import Bill, Order, BillRecord, BillingAddress from uncloud_pay.models import Bill, Order, BillRecord, BillingAddress
class BillRecordInline(admin.TabularInline): class BillRecordInline(admin.TabularInline):
model = Bill.bill_records.through model = Bill.bill_records.through
# AT some point in the future: expose REPLACED and orders that depend on us
# class OrderInline(admin.TabularInline):
# model = Order
# fk_name = "replaces"
# class OrderAdmin(admin.ModelAdmin):
# inlines = [ OrderInline ]
class BillAdmin(admin.ModelAdmin): class BillAdmin(admin.ModelAdmin):
inlines = [ BillRecordInline ] inlines = [ BillRecordInline ]
@ -69,6 +77,7 @@ class BillAdmin(admin.ModelAdmin):
admin.site.register(Bill, BillAdmin) admin.site.register(Bill, BillAdmin)
#admin.site.register(Order, OrderAdmin)
admin.site.register(Order) admin.site.register(Order)
admin.site.register(BillRecord) admin.site.register(BillRecord)
admin.site.register(BillingAddress) admin.site.register(BillingAddress)

View file

@ -7,6 +7,7 @@ from datetime import datetime, timedelta
from uncloud_pay.models import * from uncloud_pay.models import *
#import opennebula.models as one #import opennebula.models as one
from uncloud_vm.models import * from uncloud_vm.models import *
import sys
def vm_price_2020(cpu=1, ram=2, v6only=False): def vm_price_2020(cpu=1, ram=2, v6only=False):
if v6only: if v6only:
@ -49,15 +50,23 @@ class Command(BaseCommand):
# 25206 # 25206
vm25206 = VMProduct.objects.create(name="OpenNebula 25206", vm25206 = VMProduct(name="OpenNebula 25206",
cores=1, cores=1,
ram_in_gb=4, ram_in_gb=4,
owner=user) owner=user)
vm25206_ssd = VMDiskProduct.objects.create(vm=vm25206, vm25206.create_order_at(timezone.make_aware(datetime.datetime(2020,3,3)))
vm25206.save()
vm25206_ssd = VMDiskProduct(vm=vm25206,
owner=user, owner=user,
size_in_gb=30) size_in_gb=30)
vm25206_ssd.create_order_at(timezone.make_aware(datetime.datetime(2020,3,3)))
vm25206_ssd.save()
sys.exit(0)
vm25206.cores = 2 vm25206.cores = 2
vm25206.ram_in_gb = 8 vm25206.ram_in_gb = 8
vm25206.save() vm25206.save()
@ -107,6 +116,7 @@ class Command(BaseCommand):
vm25208_ssd.create_or_update_order(when_to_start=timezone.make_aware(datetime.datetime(2020,8,5))) vm25208_ssd.create_or_update_order(when_to_start=timezone.make_aware(datetime.datetime(2020,8,5)))
# 25207
vm25207 = VMProduct.objects.create(name="OpenNebula 25207", vm25207 = VMProduct.objects.create(name="OpenNebula 25207",
cores=1, cores=1,
ram_in_gb=4, ram_in_gb=4,

View file

@ -581,6 +581,16 @@ class Product(UncloudModel):
# Default period for all products # Default period for all products
default_recurring_period = RecurringPeriod.PER_30D default_recurring_period = RecurringPeriod.PER_30D
def create_order_at(self, when_to_start, *args, **kwargs):
billing_address = BillingAddress.get_address_for(self.owner)
order = Order.objects.create(owner=self.owner,
billing_address=billing_address,
starting_date=when_to_start,
one_time_price=self.one_time_price,
recurring_period=self.default_recurring_period,
recurring_price=self.recurring_price,
description=str(self))
def create_or_update_order(self, when_to_start=None): def create_or_update_order(self, when_to_start=None):
if not when_to_start: if not when_to_start:
@ -620,8 +630,8 @@ class Product(UncloudModel):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
# Create order the first time a product is created # Create order if there is none already
if self._state.adding: if not self.order:
self.create_or_update_order() self.create_or_update_order()
super().save(*args, **kwargs) super().save(*args, **kwargs)