From 169895a825d0ea670682a6e718b719d91807e1f9 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Fri, 7 Aug 2020 13:17:17 +0200 Subject: [PATCH] =?UTF-8?q?Import=20Soci=C3=A9t=C3=A9=20g=C3=A9n=C3=A9rale?= =?UTF-8?q?=20credits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- management/commands/import_transaction.py | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/management/commands/import_transaction.py b/management/commands/import_transaction.py index cc4c9f6..851320c 100644 --- a/management/commands/import_transaction.py +++ b/management/commands/import_transaction.py @@ -8,6 +8,7 @@ import pytz import datetime import copy +from django.contrib.auth.models import User from django.utils.timezone import make_aware from django.db import transaction from django.contrib.contenttypes.models import ContentType @@ -23,7 +24,7 @@ from note.models import Note, NoteClub from activity.models import Guest, GuestTransaction, Entry from member.models import Membership -from treasury.models import Remittance, SpecialTransactionProxy +from treasury.models import Remittance, SpecialTransactionProxy, SogeCredit from ._import_utils import ImportCommand, BulkCreateManager, timed MAP_TRANSACTION = dict() @@ -367,6 +368,30 @@ class Command(ImportCommand): except: print("Failed to save row: " + str(row)) + @timed + def import_soge_credits(self): + users = User.objects.filter(profile__registration_valid=True).order_by('pk') + n = users.count() + for idx, user in enumerate(users.all()): + self.update_line(idx, n, user.username) + soge_credit_transaction = SpecialTransaction.objects.filter( + reason__icontains="crédit sogé", + destination_id=user.note.id, + ) + if soge_credit_transaction.exists(): + soge_credit_transaction = soge_credit_transaction.get() + soge_credit = SogeCredit.objects.create(user=user, credit_transaction=soge_credit_transaction) + memberships = Membership.objects.filter( + user=user, + club_id__in=[BDE_PK, KFET_PK], + date_start__lte=soge_credit_transaction.created_at, + date_end__gte=soge_credit_transaction.created_at, + ).all() + for membership in memberships: + soge_credit.transactions.add(membership.transaction) + soge_credit.save() + + @timed def handle(self, *args, **kwargs): # default args, provided by ImportCommand. @@ -383,3 +408,4 @@ class Command(ImportCommand): self.set_roles() self.import_remittances(cur, kwargs["chunk"]) self.import_checks(cur) + self.import_soge_credits()