# -*- coding: utf-8 -*- # Generated by Django 1.10.4 on 2017-01-01 03:55 from __future__ import unicode_literals import django.core.validators from django.db import migrations, models import django.db.models.deletion def set_payment_reason(apps, schema_editor): db_alias = schema_editor.connection.alias Payment = apps.get_model('banking', 'Payment') Adherent = apps.get_model('adhesions', 'Adherent') Service = apps.get_model('services', 'Service') ContentType = apps.get_model('contenttypes', 'ContentType') adherent_ctype = ContentType.objects.get_for_model(Adherent) service_ctype = ContentType.objects.get_for_model(Service) for payment in Payment.objects.using(db_alias).all(): try: adherent = Adherent.objects.get(contribution__pk=payment.pk) except Adherent.DoesNotExist: pass else: payment.reason_type = adherent_ctype payment.reason_id = adherent.pk payment.save() continue # If the payment is not for an adherent, it must be for a service. service = Service.objects.get(contribution__pk=payment.pk) payment.reason_type = service_ctype payment.reason_id = service.pk payment.save() class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ('banking', '0002_payment_date'), ('adhesions', '0002_auto_20161230_1814'), ('services', '0003_auto_20161231_0020'), ] operations = [ migrations.AddField( model_name='payment', name='reason_type', field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), preserve_default=False, ), migrations.AddField( model_name='payment', name='reason_id', field=models.PositiveIntegerField(default=0), preserve_default=False, ), migrations.RunPython( set_payment_reason, ), migrations.AlterField( model_name='payment', name='reason_type', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), ), migrations.AlterField( model_name='payment', name='period', field=models.PositiveIntegerField(validators=[django.core.validators.MaxValueValidator(12)], verbose_name='Période (mois)'), ), ]