init
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def copy_payment_discounts(apps, schema_editor):
|
||||
Registration = apps.get_model("events", "Registration")
|
||||
Payment = apps.get_model("payments", "Payment")
|
||||
|
||||
payments = (
|
||||
Payment.objects.exclude(discount_code__isnull=True)
|
||||
.select_related("discount_code")
|
||||
.order_by("id")
|
||||
)
|
||||
for payment in payments:
|
||||
registration = (
|
||||
Registration.objects.filter(event_id=payment.event_id, user_id=payment.user_id)
|
||||
.order_by("-registered_at")
|
||||
.first()
|
||||
)
|
||||
if not registration:
|
||||
continue
|
||||
|
||||
updated_fields = []
|
||||
if payment.discount_code_id and not registration.discount_code_id:
|
||||
registration.discount_code_id = payment.discount_code_id
|
||||
updated_fields.append("discount_code")
|
||||
if payment.discount_amount and not registration.discount_amount:
|
||||
registration.discount_amount = payment.discount_amount
|
||||
updated_fields.append("discount_amount")
|
||||
if payment.amount is not None and registration.final_price is None:
|
||||
registration.final_price = payment.amount
|
||||
updated_fields.append("final_price")
|
||||
|
||||
if updated_fields:
|
||||
registration.save(update_fields=updated_fields)
|
||||
|
||||
if payment.registration_id is None:
|
||||
payment.registration_id = registration.id
|
||||
payment.save(update_fields=["registration"])
|
||||
|
||||
|
||||
def reverse_copy_payment_discounts(apps, schema_editor):
|
||||
# No-op for reverse; data retention preferred.
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("payments", "0003_payment_registration"),
|
||||
("events", "0009_registration_discount_amount_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(copy_payment_discounts, reverse_copy_payment_discounts),
|
||||
]
|
||||
Reference in New Issue
Block a user