Skip to content

Commit aae03d9

Browse files
authored
fix: fix issue cancelling unpaid registration (#9170)
* fix: fix issue cancelling unpaid registration * fix: add logging to reg API
1 parent ae60b41 commit aae03d9

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

ietf/meeting/utils.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,7 @@ def sync_registration_data(meeting):
14231423
# Delete registrations that exist in the DB but not in registration data, they've been cancelled
14241424
emails_to_delete = existing_emails - reg_emails
14251425
if emails_to_delete:
1426+
log(f"sync_reg: emails marked for deletion: {emails_to_delete}")
14261427
result = Registration.objects.filter(
14271428
email__in=emails_to_delete,
14281429
meeting=meeting
@@ -1432,7 +1433,6 @@ def sync_registration_data(meeting):
14321433
else:
14331434
deleted_count = 0
14341435
stats['deleted'] = deleted_count
1435-
14361436
# set meeting.attendees
14371437
count = Registration.objects.onsite().filter(meeting=meeting, checkedin=True).count()
14381438
if meeting.attendees != count:
@@ -1474,14 +1474,16 @@ def process_single_registration(reg_data, meeting):
14741474
target = registration.tickets.filter(
14751475
attendance_type__slug=ticket['attendance_type'],
14761476
ticket_type__slug=ticket['ticket_type']).first()
1477-
target.delete()
1477+
if target:
1478+
target.delete()
14781479
if registration.tickets.count() == 0:
14791480
registration.delete()
1481+
log(f"sync_reg: cancelled registration {reg_data['email']}")
14801482
return (None, 'deleted')
14811483

14821484
person = Person.objects.filter(email__address=reg_data['email']).first()
14831485
if not person:
1484-
log.log(f"ERROR: meeting registration email unknown {reg_data['email']}")
1486+
log(f"ERROR: meeting registration email unknown {reg_data['email']}")
14851487

14861488
registration, created = Registration.objects.get_or_create(
14871489
email=reg_data['email'],
@@ -1500,6 +1502,7 @@ def process_single_registration(reg_data, meeting):
15001502
if not created:
15011503
for field in ['first_name', 'last_name', 'affiliation', 'country_code', 'checkedin']:
15021504
if getattr(registration, field) != reg_data[field]:
1505+
log(f"sync_reg: found update {reg_data['email']}, {field} different, data from reg: {reg_data}")
15031506
setattr(registration, field, reg_data[field])
15041507
fields_updated = True
15051508

@@ -1536,6 +1539,7 @@ def process_single_registration(reg_data, meeting):
15361539
).order_by('id') # Use a consistent order for deterministic deletion
15371540

15381541
# Delete the required number
1542+
log(f"sync_reg: deleting {tickets_to_delete} of {ticket_type[0]}:{ticket_type[1]} of {reg_data['email']}")
15391543
for ticket in matching_tickets[:tickets_to_delete]:
15401544
ticket.delete()
15411545
tickets_modified = True
@@ -1545,6 +1549,7 @@ def process_single_registration(reg_data, meeting):
15451549
tickets_to_add = new_count - existing_count
15461550

15471551
# Create the new tickets
1552+
log(f"sync_reg: adding {tickets_to_add} of {ticket_type[0]}:{ticket_type[1]} of {reg_data['email']}")
15481553
for _ in range(tickets_to_add):
15491554
try:
15501555
RegistrationTicket.objects.create(
@@ -1555,7 +1560,6 @@ def process_single_registration(reg_data, meeting):
15551560
tickets_modified = True
15561561
except IntegrityError as e:
15571562
log(f"Error adding RegistrationTicket {e}")
1558-
15591563
# handle nomcom volunteer
15601564
if reg_data['is_nomcom_volunteer'] and person:
15611565
try:
@@ -1574,6 +1578,7 @@ def process_single_registration(reg_data, meeting):
15741578

15751579
# set action_taken
15761580
if created:
1581+
log(f"sync_reg: created record. {reg_data['email']}")
15771582
action_taken = 'created'
15781583
elif fields_updated or tickets_modified:
15791584
action_taken = 'updated'

0 commit comments

Comments
 (0)