Skip to content

Commit

Permalink
fix: avoid cascading on deletion
Browse files Browse the repository at this point in the history
This is not really desired, we do not want to delete suscriptions on package removal.
  • Loading branch information
nijel committed Oct 18, 2024
1 parent e38a1cc commit 9d6675e
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Generated by Django 5.1.2 on 2024-10-18 09:41

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("payments", "0031_alter_payment_customer_alter_payment_paid_invoice_and_more"),
("weblate_web", "0031_fill_in_customer"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.AlterField(
model_name="donation",
name="customer",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="payments.customer",
),
),
migrations.AlterField(
model_name="donation",
name="user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL
),
),
migrations.AlterField(
model_name="pastpayments",
name="donation",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="weblate_web.donation",
),
),
migrations.AlterField(
model_name="pastpayments",
name="subscription",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="weblate_web.subscription",
),
),
migrations.AlterField(
model_name="service",
name="customer",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="payments.customer",
),
),
migrations.AlterField(
model_name="subscription",
name="package",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to="weblate_web.package"
),
),
migrations.AlterField(
model_name="subscription",
name="service",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to="weblate_web.service"
),
),
]
14 changes: 7 additions & 7 deletions weblate_web/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@ def create_backup_repository(service):


class Donation(models.Model):
user = models.ForeignKey(User, on_delete=models.deletion.CASCADE)
customer = models.ForeignKey(Customer, on_delete=models.deletion.CASCADE, null=True)
user = models.ForeignKey(User, on_delete=models.deletion.PROTECT)
customer = models.ForeignKey(Customer, on_delete=models.deletion.PROTECT, null=True)
payment = Char32UUIDField(blank=True, null=True)
reward = models.IntegerField(choices=REWARDS, default=0)
link_text = models.CharField(
Expand Down Expand Up @@ -505,7 +505,7 @@ def get_repeat(self):
class Service(models.Model):
secret = models.CharField(max_length=100, default=generate_secret, db_index=True)
users = models.ManyToManyField(User)
customer = models.ForeignKey(Customer, on_delete=models.deletion.CASCADE, null=True)
customer = models.ForeignKey(Customer, on_delete=models.deletion.PROTECT, null=True)
status = models.CharField(
max_length=150,
choices=(
Expand Down Expand Up @@ -845,9 +845,9 @@ def regenerate(self):


class Subscription(models.Model):
service = models.ForeignKey(Service, on_delete=models.deletion.CASCADE)
service = models.ForeignKey(Service, on_delete=models.deletion.PROTECT)
payment = Char32UUIDField(blank=True, null=True)
package = models.ForeignKey(Package, on_delete=models.deletion.CASCADE)
package = models.ForeignKey(Package, on_delete=models.deletion.PROTECT)
created = models.DateTimeField(auto_now_add=True)
expires = models.DateTimeField()
enabled = models.BooleanField(default=True, blank=True)
Expand Down Expand Up @@ -966,10 +966,10 @@ def add_payment(self, invoice: Invoice, period: str):

class PastPayments(models.Model):
subscription = models.ForeignKey(
Subscription, on_delete=models.deletion.CASCADE, null=True, blank=True
Subscription, on_delete=models.deletion.PROTECT, null=True, blank=True
)
donation = models.ForeignKey(
Donation, on_delete=models.deletion.CASCADE, null=True, blank=True
Donation, on_delete=models.deletion.PROTECT, null=True, blank=True
)
payment = Char32UUIDField()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Generated by Django 5.1.2 on 2024-10-18 09:41

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("invoices", "0001_initial"),
("payments", "0030_customer_discount"),
]

operations = [
migrations.AlterField(
model_name="payment",
name="customer",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to="payments.customer"
),
),
migrations.AlterField(
model_name="payment",
name="paid_invoice",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="invoices.invoice",
),
),
migrations.AlterField(
model_name="payment",
name="repeat",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="payments.payment",
),
),
]
6 changes: 3 additions & 3 deletions weblate_web/payments/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,14 +240,14 @@ class Payment(models.Model):
details = models.JSONField(default=dict, blank=True, encoder=DjangoJSONEncoder)
# Payment extra information from the origin
extra = models.JSONField(default=dict, blank=True, encoder=DjangoJSONEncoder)
customer = models.ForeignKey(Customer, on_delete=models.deletion.CASCADE)
customer = models.ForeignKey(Customer, on_delete=models.deletion.PROTECT)
repeat = models.ForeignKey(
"Payment", on_delete=models.deletion.CASCADE, null=True, blank=True
"Payment", on_delete=models.deletion.PROTECT, null=True, blank=True
)
invoice = models.CharField(max_length=20, blank=True, default="")
paid_invoice = models.ForeignKey(
"invoices.Invoice",
on_delete=models.deletion.CASCADE,
on_delete=models.deletion.PROTECT,
blank=True,
null=True,
)
Expand Down

0 comments on commit 9d6675e

Please sign in to comment.