39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
|
# Generated by Django 2.2 on 2019-06-03 19:30
|
||
|
|
||
|
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
|
||
|
from django.db import migrations
|
||
|
|
||
|
|
||
|
def set_attr_payment(apps, schema_editor):
|
||
|
Attribution = apps.get_model("bda", "Attribution")
|
||
|
for attr in Attribution.objects.all():
|
||
|
attr.paid = attr.participant.paid
|
||
|
attr.paymenttype = attr.participant.paymenttype
|
||
|
attr.save()
|
||
|
|
||
|
|
||
|
def set_participant_payment(apps, schema_editor):
|
||
|
Participant = apps.get_model("bda", "Participant")
|
||
|
for part in Participant.objects.all():
|
||
|
attr_set = part.attribution_set
|
||
|
part.paid = attr_set.exists() and not attr_set.filter(paid=False).exists()
|
||
|
try:
|
||
|
# S'il n'y a qu'un seul type de paiement, on le set
|
||
|
part.paymenttype = (
|
||
|
attr_set.values_list("paymenttype", flat=True).distinct().get()
|
||
|
)
|
||
|
# Sinon, whatever
|
||
|
except (ObjectDoesNotExist, MultipleObjectsReturned) as e:
|
||
|
print(e)
|
||
|
pass
|
||
|
part.save()
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
|
||
|
dependencies = [("bda", "0014_attribution_paid_field")]
|
||
|
|
||
|
operations = [
|
||
|
migrations.RunPython(set_attr_payment, set_participant_payment, atomic=True)
|
||
|
]
|