@@ -506,7 +506,16 @@ def process_shortlist_post(
506506 if key .startswith ("notes-" )
507507 }
508508
509- grants = list (review_session .conference .grants .filter (id__in = decisions .keys ()))
509+ grants = list (
510+ review_session .conference .grants .filter (
511+ id__in = decisions .keys ()
512+ ).prefetch_related (
513+ Prefetch (
514+ "reimbursements" ,
515+ queryset = GrantReimbursement .objects .select_related ("category" ),
516+ )
517+ )
518+ )
510519
511520 # Track grants with pending status changes for audit logging
512521 grants_with_pending_status_changes = {}
@@ -526,13 +535,14 @@ def process_shortlist_post(
526535 grants_with_pending_status_changes [grant .id ] = original_pending_status
527536
528537 # Handle reimbursement deletions
529- if grant .reimbursements .exists ():
538+ reimbursements = list (grant .reimbursements .all ())
539+ if reimbursements :
530540 approved_reimbursement_categories = (
531541 approved_reimbursement_categories_decisions .get (grant .id , [])
532542 )
533543 if decision != Grant .Status .approved :
534544 # Delete all reimbursements if not approved
535- for reimbursement in grant . reimbursements . all () :
545+ for reimbursement in reimbursements :
536546 create_deletion_admin_log_entry (
537547 request .user ,
538548 grant ,
@@ -541,16 +551,21 @@ def process_shortlist_post(
541551 reimbursement .delete ()
542552 else :
543553 # Only keep those in current approved categories
544- to_delete = grant .reimbursements .exclude (
545- category_id__in = approved_reimbursement_categories
546- )
554+ to_delete = [
555+ reimbursement
556+ for reimbursement in reimbursements
557+ if reimbursement .category_id
558+ not in approved_reimbursement_categories
559+ ]
547560 for reimbursement in to_delete :
548561 create_deletion_admin_log_entry (
549562 request .user ,
550563 grant ,
551564 change_message = f"[Review Session] Reimbursement removed: { reimbursement .category .name } ." ,
552565 )
553- to_delete .delete ()
566+ GrantReimbursement .objects .filter (
567+ id__in = [reimbursement .id for reimbursement in to_delete ]
568+ ).delete ()
554569
555570 # Save grants and create audit logs
556571 for grant in grants :
0 commit comments