Import Société générale credits

This commit is contained in:
Yohann D'ANELLO 2020-08-07 13:17:17 +02:00
parent 4984159a61
commit 169895a825
1 changed files with 27 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import pytz
import datetime import datetime
import copy import copy
from django.contrib.auth.models import User
from django.utils.timezone import make_aware from django.utils.timezone import make_aware
from django.db import transaction from django.db import transaction
from django.contrib.contenttypes.models import ContentType 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 activity.models import Guest, GuestTransaction, Entry
from member.models import Membership 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 from ._import_utils import ImportCommand, BulkCreateManager, timed
MAP_TRANSACTION = dict() MAP_TRANSACTION = dict()
@ -367,6 +368,30 @@ class Command(ImportCommand):
except: except:
print("Failed to save row: " + str(row)) 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 @timed
def handle(self, *args, **kwargs): def handle(self, *args, **kwargs):
# default args, provided by ImportCommand. # default args, provided by ImportCommand.
@ -383,3 +408,4 @@ class Command(ImportCommand):
self.set_roles() self.set_roles()
self.import_remittances(cur, kwargs["chunk"]) self.import_remittances(cur, kwargs["chunk"])
self.import_checks(cur) self.import_checks(cur)
self.import_soge_credits()