Moving away from getpaid for now.
[wolnelektury.git] / src / funding / migrations / 0009_move_from_getpaid.py
diff --git a/src/funding/migrations/0009_move_from_getpaid.py b/src/funding/migrations/0009_move_from_getpaid.py
new file mode 100644 (file)
index 0000000..2beeb24
--- /dev/null
@@ -0,0 +1,44 @@
+# Generated by Django 2.2.28 on 2022-10-03 10:55
+from django.conf import settings
+from django.db import migrations
+
+
+def move_from_getpaid(apps, schema_editor):
+    try:
+        G = settings.GETPAID_BACKENDS_SETTINGS
+    except AttributeError:
+        G = {}
+        getpaid_conf = False
+    else:
+        getpaid_conf = True
+
+    Funding = apps.get_model('funding', 'Funding')
+    for f in Funding.objects.filter(status=''):
+        payment = f.payment.first()
+        # TODO: what happens when no payments any more?
+        if payment is None:
+            continue
+        f.created_at = payment.created_on
+        f.order_id = payment.external_id
+        f.pos_id = G.get(payment.backend, {}).get('pos_id', '')
+        assert getpaid_conf, 'Getpaid configuration removed prematurely.'
+        f.status = {
+            'paid': 'COMPLETED',
+            'failed': 'REJECTED',
+            'in_progress': 'CANCELLED',
+        }[payment.status]
+        f.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('funding', '0008_auto_20221003_1235'),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            move_from_getpaid,
+            migrations.RunPython.noop
+        )
+    ]