mirror of
				https://gitlab.crans.org/bde/nk20-scripts
				synced 2025-10-30 22:59:52 +01:00 
			
		
		
		
	add support for GuestTransaction and timing
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
|  | import re | ||||||
| import psycopg2 as pg | import psycopg2 as pg | ||||||
| import psycopg2.extras as pge | import psycopg2.extras as pge | ||||||
| import pytz | import pytz | ||||||
| @@ -16,9 +16,10 @@ from note.models import (TemplateCategory, | |||||||
|                          SpecialTransaction |                          SpecialTransaction | ||||||
|                          ) |                          ) | ||||||
| from note.models import Note | from note.models import Note | ||||||
|  | from activity.models import Guest, GuestTransaction | ||||||
|  |  | ||||||
| from member.models import Membership, MembershipTransaction | from member.models import Membership, MembershipTransaction | ||||||
| from ._import_utils import ImportCommand, BulkCreateManager | from ._import_utils import ImportCommand, BulkCreateManager, timed | ||||||
|  |  | ||||||
| BDE_PK = 1 | BDE_PK = 1 | ||||||
| KFET_PK = 2 | KFET_PK = 2 | ||||||
| @@ -48,6 +49,7 @@ class Command(ImportCommand): | |||||||
|         parser.add_argument('-b', '--buttons', action='store_true', help="import buttons") |         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") |         parser.add_argument('-t', '--transactions', action='store', default=0, help="start id for transaction import") | ||||||
|  |  | ||||||
|  |     @timed | ||||||
|     @transaction.atomic |     @transaction.atomic | ||||||
|     def import_buttons(self, cur, chunk_size): |     def import_buttons(self, cur, chunk_size): | ||||||
|         categories = dict() |         categories = dict() | ||||||
| @@ -78,6 +80,7 @@ class Command(ImportCommand): | |||||||
|         bulk_mgr.done() |         bulk_mgr.done() | ||||||
|         return buttons, categories |         return buttons, categories | ||||||
|  |  | ||||||
|  |     @timed | ||||||
|     @transaction.atomic |     @transaction.atomic | ||||||
|     def import_transaction(self, cur, chunk_size, idmin, buttons, categories): |     def import_transaction(self, cur, chunk_size, idmin, buttons, categories): | ||||||
|         bulk_mgr = BulkCreateManager(chunk_size=chunk_size) |         bulk_mgr = BulkCreateManager(chunk_size=chunk_size) | ||||||
| @@ -183,7 +186,15 @@ class Command(ImportCommand): | |||||||
|                     Membership(**kfet_dict), |                     Membership(**kfet_dict), | ||||||
|                 ) |                 ) | ||||||
|             elif ttype == "invitation": |             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), |             bulk_mgr.add(Transaction(**obj_dict), | ||||||
|                          child_transaction(**child_dict)) |                          child_transaction(**child_dict)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user