--- /dev/null
+# Generated by Django 4.0.8 on 2026-04-01 14:25
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('paypal', '0004_auto_20210622_0945'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Donation',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('transaction_id', models.CharField(db_index=True, max_length=255)),
+ ('timestamp', models.DateTimeField()),
+ ('amount', models.DecimalField(decimal_places=2, max_digits=10)),
+ ('billing_agreement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='paypal.billingagreement')),
+ ],
+ ),
+ ]
def get_donations(self, year):
from .rest import get_donations
return get_donations(self.agreement_id, year)
+
+ def update_donations(self, year):
+ from .rest import get_donations
+ for donation in get_donations(self.agreement_id, year):
+ Donation.objects.get_or_create(
+ transaction_id=donation['transaction_id'],
+ defaults={
+ 'timestamp': donation['timestamp'],
+ 'amount': donation['amount'],
+ }
+ )
+
+
+class Donation(models.Model):
+ billing_agreement = models.ForeignKey(BillingAgreement, models.CASCADE)
+ transaction_id = models.CharField(max_length=255, db_index=True)
+ timestamp = models.DateTimeField()
+ amount = models.DecimalField(decimal_places=2, max_digits=10)
continue
assert transaction['amount']['currency'] == 'PLN'
transactions.append({
+ 'transation_id': transaction['transaction_id'],
'timestamp': dt,
'amount': Decimal(transaction['amount']['value'])
})