1
0
Parcourir la source

Add PaymentMethod to MembershipFee in replacement of static choice list

Fabs il y a 10 ans
Parent
commit
76f87a6f80

+ 21 - 0
coin/members/migrations/0011_membershipfee_payment_method_tmp.py

@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('billing', '0005_remove_payment_payment_mean'),
+        ('members', '0010_auto_20141008_2246'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='membershipfee',
+            name='payment_method_tmp',
+            field=models.ForeignKey(verbose_name='moyen de paiment', to='billing.PaymentMethod', null=True),
+            preserve_default=True,
+        ),
+    ]

+ 46 - 0
coin/members/migrations/0012_auto_20141103_2241.py

@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+PAYMENT_MEAN_MAPPING = {
+    'cash': (1, 'Espèces'),
+    'check': (2, 'Chèque'),
+    'transfer': (3, 'Virement'),
+    'other': (4, 'Autre')
+}
+
+def forward(apps, schema_editor):
+    # PaymentMethod = apps.get_model("billing", "PaymentMethod")
+
+    # Change invoices payment mean choice field to foreign key
+    MembershipFee = apps.get_model("members", "MembershipFee")
+
+    for fee in MembershipFee.objects.all():
+        if fee.payment_method  and fee.payment_method in PAYMENT_MEAN_MAPPING:
+            fee.payment_method_tmp_id = PAYMENT_MEAN_MAPPING[fee.payment_method][0]
+        fee.save()
+
+def backward(apps, schema_editor):
+    # Change invoices payment mean foreign key field to choice
+    MembershipFee = apps.get_model("members", "MembershipFee")
+
+    for fee in MembershipFee.objects.all():
+        if fee.payment_method_tmp_id:
+            for k,v in PAYMENT_MEAN_MAPPING.iteritems():
+                if v[0]==fee.payment_method_tmp_id:
+                    fee.payment_method = k
+        fee.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('billing', '0003_auto_20141101_2337'),
+        ('members', '0011_membershipfee_payment_method_tmp'),
+    ]
+
+    operations = [
+        migrations.RunPython(forward, backward),
+    ]

+ 22 - 0
coin/members/migrations/0013_auto_20141103_2353.py

@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('members', '0012_auto_20141103_2241'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='membershipfee',
+            name='payment_method'),
+        migrations.RenameField(
+            model_name='membershipfee',
+            old_name='payment_method_tmp',
+            new_name='payment_method',
+        )
+    ]

+ 2 - 9
coin/members/models.py

@@ -313,12 +313,6 @@ class CryptoKey(models.Model):
 
 
 class MembershipFee(models.Model):
-    PAYMENT_METHOD_CHOICES = (
-        ('cash', 'Espèces'),
-        ('check', 'Chèque'),
-        ('transfer', 'Virement'),
-        ('other', 'Autre')
-    )
 
     member = models.ForeignKey('Member', related_name='membership_fees',
                                verbose_name='membre')
@@ -335,9 +329,8 @@ class MembershipFee(models.Model):
         verbose_name='date de fin de cotisation',
         help_text='par défaut, la cotisation dure un an')
 
-    payment_method = models.CharField(max_length=100, null=True, blank=True,
-                                      choices=PAYMENT_METHOD_CHOICES,
-                                      verbose_name='moyen de paiement')
+    payment_method = models.ForeignKey('billing.PaymentMethod', null=True,
+                                         verbose_name='moyen de paiment')
     reference = models.CharField(max_length=125, null=True, blank=True,
                                  verbose_name='référence du paiement',
                                  help_text='numéro de chèque, '