🐛 Fix NK15 import

This commit is contained in:
Yohann D'ANELLO 2020-07-23 07:21:29 +02:00
parent 6cfae5fd69
commit f5967359a9
2 changed files with 21 additions and 15 deletions

View File

@ -31,5 +31,5 @@ class Command(ImportCommand):
kwargs["buttons"] = True kwargs["buttons"] = True
call_command('import_transaction', **kwargs) call_command('import_transaction', **kwargs)
call_command('make_su','-sS', 'Coq', 'erdnaxe', 'PAC', 'Pollion', 'ÿnérant') call_command('make_su','-sS', 'Coq', 'erdnaxe', 'Krokmou', 'PAC', 'Pollion', 'TLinux', 'ÿnérant')
call_command('syncsql') call_command('syncsql')

View File

@ -18,9 +18,9 @@ from note.models import (TemplateCategory,
MembershipTransaction, MembershipTransaction,
) )
from note.models import Note, NoteClub from note.models import Note, NoteClub
from activity.models import Guest, GuestTransaction from activity.models import Guest, GuestTransaction, Entry
from member.models import Membership, MembershipTransaction, Role from member.models import Membership
from ._import_utils import ImportCommand, BulkCreateManager, timed from ._import_utils import ImportCommand, BulkCreateManager, timed
# from member/fixtures/initial # from member/fixtures/initial
@ -143,17 +143,19 @@ class Command(ImportCommand):
return obj_dict, child_dict, SpecialTransaction return obj_dict, child_dict, SpecialTransaction
def _guest_transaction(self, row, obj_dict, child_dict): def _guest_transaction(self, row, obj_dict, child_dict):
# Currently GuestTransaction is related to a Guest.
# This is not ideal and should be change to the Entry of this Guest.
obj_dict["polymorphic_ctype"] = CT["GuestTransaction"] obj_dict["polymorphic_ctype"] = CT["GuestTransaction"]
m = re.search(r"Invitation (.*?)(?:\s\()(.*?)\s(.*?)\)", row["description"]) m = re.search(r"Invitation (.*?)(?:\s\()(.*?)\s(.*?)\)", row["description"])
if m: if m:
activity_name = m.group(1)
first_name, last_name = m.group(2), m.group(3) first_name, last_name = m.group(2), m.group(3)
if first_name == "Marion" and last_name == "Bizu Pose": if first_name == "Marion" and last_name == "Bizu Pose":
first_name, last_name = "Marion Bizu", "Pose" first_name, last_name = "Marion Bizu", "Pose"
guest_id = Guest.objects.filter(first_name__iexact=first_name, entry_id = Entry.objects.filter(
last_name__iexact=last_name).first().pk activity__name__iexact=activity_name,
child_dict["guest_id"] = guest_id guest__first_name__iexact=first_name,
guest__last_name__iexact=last_name,
).first().pk
child_dict["entry_id"] = entry_id
else: else:
raise(f"Guest not Found {row['id']} {first_name}, last_name") raise(f"Guest not Found {row['id']} {first_name}, last_name")
@ -182,9 +184,6 @@ class Command(ImportCommand):
except (pytz.NonExistentTimeError, pytz.AmbiguousTimeError): except (pytz.NonExistentTimeError, pytz.AmbiguousTimeError):
date = make_aware(row["transac_date"] + datetime.timedelta(hours=1)) date = make_aware(row["transac_date"] + datetime.timedelta(hours=1))
if len(row["description"]) > 255:
row["description"] = row["description"][:252] + "..."
# standart transaction object # standart transaction object
obj_dict = { obj_dict = {
"pk": pk_transaction, "pk": pk_transaction,
@ -200,6 +199,8 @@ class Command(ImportCommand):
"source_alias": "", "source_alias": "",
"valid": row["valide"], "valid": row["valide"],
} }
if len(obj_dict["reason"]) > 255:
obj_dict["reason"] = obj_dict["reason"][:252] + "..."
# for child transaction Models # for child transaction Models
child_dict = {"pk": pk_transaction} child_dict = {"pk": pk_transaction}
ttype = row["type"] ttype = row["type"]
@ -264,17 +265,22 @@ class Command(ImportCommand):
# create base transaction object and typed one # create base transaction object and typed one
bulk_mgr.add(Transaction(**obj_dict)) bulk_mgr.add(Transaction(**obj_dict))
if child_transaction is not None: if child_transaction is not None:
child_dict.update(obj_dict)
bulk_mgr.add(child_transaction(**child_dict)) bulk_mgr.add(child_transaction(**child_dict))
pk_transaction += 1 pk_transaction += 1
bulk_mgr.done() bulk_mgr.done()
@timed
def set_roles(self): def set_roles(self):
bulk_mgr = BulkCreateManager(chunk_size=10000) bulk_mgr = BulkCreateManager(chunk_size=10000)
membership_ids = Membership.objects.values_list('id',flat=True) bde_membership_ids = Membership.objects.filter(club__pk=BDE_PK).values_list('id', flat=True)
for m_id in membership_ids: kfet_membership_ids = Membership.objects.filter(club__pk=KFET_PK).values_list('id', flat=True)
n = len(bde_membership_ids)
for idx, (m_bde_id, m_kfet_id) in enumerate(zip(bde_membership_ids, kfet_membership_ids)):
self.update_line(idx, n, str(idx))
bulk_mgr.add( bulk_mgr.add(
Membership.roles.through(membership_id=m_id,role_id=BDE_ROLE_PK), Membership.roles.through(membership_id=m_bde_id, role_id=BDE_ROLE_PK),
Membership.roles.through(membership_id=m_id,role_id=KFET_ROLE_PK), Membership.roles.through(membership_id=m_kfet_id, role_id=KFET_ROLE_PK),
) )
bulk_mgr.done() bulk_mgr.done()