introduce service plans

This commit is contained in:
Tobias Brunner 2025-01-28 10:41:39 +01:00
parent f69f7fb755
commit 70f4a02db9
No known key found for this signature in database
11 changed files with 362 additions and 20 deletions

View file

@ -0,0 +1,118 @@
# Generated by Django 5.1.5 on 2025-01-28 09:19
import django.db.models.deletion
from django.db import migrations, models
def create_initial_currencies(apps, schema_editor):
Currency = apps.get_model("services", "Currency")
currencies = [
{"code": "USD", "name": "US Dollar", "symbol": "$"},
{"code": "CHF", "name": "Swiss Franc", "symbol": "CHF"},
{"code": "EUR", "name": "Euro", "symbol": ""},
]
for currency_data in currencies:
Currency.objects.create(**currency_data)
def remove_initial_currencies(apps, schema_editor):
Currency = apps.get_model("services", "Currency")
Currency.objects.all().delete()
class Migration(migrations.Migration):
dependencies = [
("services", "0008_remove_service_countries_and_more"),
]
operations = [
migrations.CreateModel(
name="Currency",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("code", models.CharField(max_length=3, unique=True)),
("name", models.CharField(max_length=50)),
("symbol", models.CharField(max_length=5)),
],
options={
"verbose_name_plural": "Currencies",
"ordering": ["code"],
},
),
migrations.CreateModel(
name="Plan",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.CharField(max_length=100)),
("description", models.TextField()),
("is_default", models.BooleanField(default=False)),
("features", models.TextField(blank=True)),
("order", models.IntegerField(default=0)),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"service",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="plans",
to="services.service",
),
),
],
options={
"ordering": ["order", "name"],
"unique_together": {("service", "name")},
},
),
migrations.CreateModel(
name="PlanPrice",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("price", models.DecimalField(decimal_places=2, max_digits=10)),
(
"currency",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="services.currency",
),
),
(
"plan",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="prices",
to="services.plan",
),
),
],
options={
"unique_together": {("plan", "currency")},
},
),
migrations.RunPython(create_initial_currencies, remove_initial_currencies),
]

View file

@ -0,0 +1,17 @@
# Generated by Django 5.1.5 on 2025-01-28 09:28
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("services", "0009_currency_plan_planprice"),
]
operations = [
migrations.RemoveField(
model_name="service",
name="price",
),
]