128 lines
4.4 KiB
Python
128 lines
4.4 KiB
Python
|
# Generated by Django 5.2 on 2025-05-27 14:52
|
||
|
|
||
|
import django.db.models.deletion
|
||
|
from django.db import migrations, models
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
|
||
|
dependencies = [
|
||
|
("services", "0030_serviceoffering_msp"),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
migrations.CreateModel(
|
||
|
name="ExternalPricePlans",
|
||
|
fields=[
|
||
|
(
|
||
|
"id",
|
||
|
models.BigAutoField(
|
||
|
auto_created=True,
|
||
|
primary_key=True,
|
||
|
serialize=False,
|
||
|
verbose_name="ID",
|
||
|
),
|
||
|
),
|
||
|
("plan_name", models.CharField()),
|
||
|
(
|
||
|
"description",
|
||
|
models.CharField(blank=True, max_length=200, null=True),
|
||
|
),
|
||
|
("source", models.URLField(blank=True, null=True)),
|
||
|
("date_retrieved", models.DateField(blank=True, null=True)),
|
||
|
(
|
||
|
"currency",
|
||
|
models.CharField(
|
||
|
choices=[
|
||
|
("CHF", "Swiss Franc"),
|
||
|
("EUR", "Euro"),
|
||
|
("USD", "US Dollar"),
|
||
|
],
|
||
|
default="CHF",
|
||
|
max_length=3,
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"term",
|
||
|
models.CharField(
|
||
|
choices=[
|
||
|
("MTH", "per Month (30d)"),
|
||
|
("DAY", "per Day"),
|
||
|
("HR", "per Hour"),
|
||
|
("MIN", "per Minute"),
|
||
|
],
|
||
|
default="MTH",
|
||
|
max_length=3,
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"amount",
|
||
|
models.DecimalField(
|
||
|
decimal_places=4,
|
||
|
help_text="Price per unit in the specified currency, excl. VAT",
|
||
|
max_digits=10,
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"vcpus",
|
||
|
models.FloatField(
|
||
|
blank=True, help_text="Number of included vCPUs", null=True
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"ram",
|
||
|
models.FloatField(
|
||
|
blank=True, help_text="Amount of GiB RAM included", null=True
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"storage",
|
||
|
models.FloatField(
|
||
|
blank=True, help_text="Amount of GiB included", null=True
|
||
|
),
|
||
|
),
|
||
|
("competitor_sla", models.CharField(blank=True, null=True)),
|
||
|
("replicas", models.IntegerField(blank=True, null=True)),
|
||
|
(
|
||
|
"cloud_provider",
|
||
|
models.ForeignKey(
|
||
|
on_delete=django.db.models.deletion.CASCADE,
|
||
|
related_name="external_price",
|
||
|
to="services.cloudprovider",
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"compare_to",
|
||
|
models.ManyToManyField(
|
||
|
blank=True,
|
||
|
null=True,
|
||
|
related_name="external_prices",
|
||
|
to="services.computeplan",
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"service",
|
||
|
models.ForeignKey(
|
||
|
on_delete=django.db.models.deletion.CASCADE,
|
||
|
related_name="external_price",
|
||
|
to="services.service",
|
||
|
),
|
||
|
),
|
||
|
(
|
||
|
"vshn_appcat_price",
|
||
|
models.ForeignKey(
|
||
|
blank=True,
|
||
|
help_text="Specific VSHN AppCat price configuration to compare against",
|
||
|
null=True,
|
||
|
on_delete=django.db.models.deletion.CASCADE,
|
||
|
related_name="external_comparisons",
|
||
|
to="services.vshnappcatprice",
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
options={
|
||
|
"verbose_name": "External Price",
|
||
|
},
|
||
|
),
|
||
|
]
|