forked from uncloud/uncloud
++stuff
This commit is contained in:
parent
d2bd6ba200
commit
9b00ef11fb
3 changed files with 33 additions and 4 deletions
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue