diff --git a/management/commands/import_transaction.py b/management/commands/import_transaction.py index 03a21c2..5d6cbca 100644 --- a/management/commands/import_transaction.py +++ b/management/commands/import_transaction.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 - +import re import psycopg2 as pg import psycopg2.extras as pge import pytz @@ -16,9 +16,10 @@ from note.models import (TemplateCategory, SpecialTransaction ) from note.models import Note +from activity.models import Guest, GuestTransaction from member.models import Membership, MembershipTransaction -from ._import_utils import ImportCommand, BulkCreateManager +from ._import_utils import ImportCommand, BulkCreateManager, timed BDE_PK = 1 KFET_PK = 2 @@ -48,6 +49,7 @@ class Command(ImportCommand): parser.add_argument('-b', '--buttons', action='store_true', help="import buttons") parser.add_argument('-t', '--transactions', action='store', default=0, help="start id for transaction import") + @timed @transaction.atomic def import_buttons(self, cur, chunk_size): categories = dict() @@ -78,6 +80,7 @@ class Command(ImportCommand): bulk_mgr.done() return buttons, categories + @timed @transaction.atomic def import_transaction(self, cur, chunk_size, idmin, buttons, categories): bulk_mgr = BulkCreateManager(chunk_size=chunk_size) @@ -183,8 +186,16 @@ class Command(ImportCommand): Membership(**kfet_dict), ) elif ttype == "invitation": - print("invitation not supported yet:", ttype) - + child_transaction = GuestTransaction + m = re.search(r"Invitation (.*?)(?:\s\()(.*?)\s(.*?)\)", row["description"]) + if m: + first_name, last_name = m.groups(1), m.groups(2) + guest_id = Guest.object.filter(first_name__iexact=first_name, + last_name__iexact=last_name).first().pk + child_dict["guest_id"] = guest_id + else: + raise(f"Guest not Found {row['id']} {first_name}, last_name" ) + bulk_mgr.add(Transaction(**obj_dict), child_transaction(**child_dict)) pk_transaction += 1