@@ -621,6 +621,17 @@ def _get_requirement_restorative_justice_sub_query():
621621 )
622622
623623
624+ def _get_inspection_date_issued_sub_query ():
625+ return (
626+ db .session .query (
627+ InspectionRecordModel .inspection_id ,
628+ func .max (InspectionRecordModel .date_issued ).label ("date_issued" )
629+ )
630+ .group_by (InspectionRecordModel .inspection_id )
631+ .subquery ()
632+ )
633+
634+
624635def _create_model_aliases ():
625636 """Create and return all model aliases needed for the query."""
626637 return {
@@ -631,7 +642,6 @@ def _create_model_aliases():
631642 "req" : aliased (InspectionRequirementModel ),
632643 "insp" : aliased (InspectionModel ),
633644 "enf_map" : aliased (InspectionReqEnforcementMapModel ),
634- "insp_rec" : aliased (InspectionRecordModel ),
635645 "req_source" : aliased (InspectionReqSourceDetailModel ),
636646 "enf_action" : aliased (EnforcementActionOptionModel ),
637647 "staff" : aliased (StaffUserModel ),
@@ -662,6 +672,7 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
662672 subqueries = {
663673 "first_requirement_source" : _get_first_requirement_source_sub_query (),
664674 "all_requirement_sources" : _get_all_requirement_sources_sub_query (),
675+ "inspection_date_issued" : _get_inspection_date_issued_sub_query (),
665676 "requirement_order" : _get_requirement_order_sub_query (),
666677 "requirement_warning_letter" : _get_requirement_warning_letter_sub_query (),
667678 "requirement_violation_ticket" : _get_requirement_violation_ticket_sub_query (),
@@ -678,7 +689,7 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
678689 db .session .query (
679690 models ["req" ],
680691 models ["insp" ].ir_number .label ("ir_number" ),
681- models [ "insp_rec" ] .date_issued .label ("date_issued" ),
692+ subqueries [ "inspection_date_issued" ]. c .date_issued .label ("date_issued" ),
682693 models ["enf_map" ].enforcement_action_id .label ("enforcement_action_id" ),
683694 models ["enf_action" ].name .label ("enforcement_action_name" ),
684695 models ["staff" ].id .label ("staff_id" ),
@@ -718,14 +729,6 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
718729 ),
719730 subqueries ["all_requirement_sources" ].c .all_sources .label ("requirement_sources" ),
720731 )
721- .join (
722- models ["topic" ],
723- models ["topic" ].id == models ["req" ].topic_id ,
724- )
725- .join (
726- models ["cmp_finding" ],
727- models ["cmp_finding" ].id == models ["req" ].compliance_finding_id ,
728- )
729732 .join (
730733 models ["insp" ],
731734 and_ (
@@ -734,6 +737,14 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
734737 models ["insp" ].is_active .is_ (True ),
735738 ),
736739 )
740+ .join (
741+ models ["topic" ],
742+ models ["topic" ].id == models ["req" ].topic_id ,
743+ )
744+ .join (
745+ models ["cmp_finding" ],
746+ models ["cmp_finding" ].id == models ["req" ].compliance_finding_id ,
747+ )
737748 .join (
738749 models ["enf_map" ],
739750 and_ (
@@ -751,8 +762,8 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
751762 models ["insp" ].primary_officer_id == models ["staff" ].id ,
752763 )
753764 .outerjoin (
754- models [ "insp_rec " ],
755- models ["insp" ].id == models [ "insp_rec" ] .inspection_id ,
765+ subqueries [ "inspection_date_issued " ],
766+ models ["insp" ].id == subqueries [ "inspection_date_issued" ]. c .inspection_id ,
756767 )
757768 .outerjoin (
758769 subqueries ["first_requirement_source" ],
@@ -879,7 +890,7 @@ def _build_inspection_requirements_query(args, enable_pagination=True):
879890 )
880891
881892 # Apply filters based on query parameters
882- base_query = _apply_filters (base_query , args , ** models )
893+ base_query = _apply_filters (base_query , args , subqueries = subqueries , ** models )
883894
884895 # Apply pagination if requested
885896 if enable_pagination :
@@ -924,7 +935,7 @@ def _apply_requirement_filters(query, args, **kwargs):
924935 return query
925936
926937
927- def _apply_inspection_filters (query , args , ** kwargs ):
938+ def _apply_inspection_filters (query , args , subqueries = None , ** kwargs ):
928939 """Apply inspection-related filters."""
929940 # IR number filter
930941 if args .get ("ir_no" ) and args .get ("ir_no" ).strip ():
@@ -950,9 +961,9 @@ def _apply_inspection_filters(query, args, **kwargs):
950961 )
951962
952963 # Date issued filter
953- if args .get ("date_issued" ):
964+ if args .get ("date_issued" ) and subqueries :
954965 query = query .filter (
955- func .date (kwargs . get ( "insp_rec" ) .date_issued ) == args ["date_issued" ]
966+ func .date (subqueries [ "inspection_date_issued" ]. c .date_issued ) == args ["date_issued" ]
956967 )
957968 return query
958969
@@ -1036,7 +1047,7 @@ def _apply_approval_and_source_filters(query, args, **kwargs):
10361047 return query
10371048
10381049
1039- def _apply_filters (query , args , ** kwargs ): # pylint: disable=too-many-arguments
1050+ def _apply_filters (query , args , subqueries = None , ** kwargs ):
10401051 """Apply filters to the query based on arguments.
10411052
10421053 Args:
@@ -1051,7 +1062,7 @@ def _apply_filters(query, args, **kwargs): # pylint: disable=too-many-arguments
10511062 query = _apply_requirement_filters (query , args , ** kwargs )
10521063
10531064 # Apply inspection-related filters
1054- query = _apply_inspection_filters (query , args , ** kwargs )
1065+ query = _apply_inspection_filters (query , args , subqueries = subqueries , ** kwargs )
10551066
10561067 # Apply approval and source-related filters
10571068 query = _apply_approval_and_source_filters (query , args , ** kwargs )
@@ -1082,7 +1093,6 @@ def _apply_pagination(query, args, subqueries, **kwargs):
10821093 "req" : kwargs .get ("req" ),
10831094 "enf_map" : kwargs .get ("enf_map" ),
10841095 "insp" : kwargs .get ("insp" ),
1085- "insp_rec" : kwargs .get ("insp_rec" ),
10861096 }
10871097
10881098 # Group reference data models
@@ -1123,7 +1133,7 @@ def _apply_pagination(query, args, subqueries, **kwargs):
11231133 distinct_query = query .with_entities (
11241134 core_models ["req" ],
11251135 core_models ["insp" ].ir_number .label ("ir_number" ),
1126- core_models [ "insp_rec" ] .date_issued .label ("date_issued" ),
1136+ subqueries [ "inspection_date_issued" ]. c .date_issued .label ("date_issued" ),
11271137 core_models ["enf_map" ].enforcement_action_id .label ("enforcement_action_id" ),
11281138 reference_models ["enf_action" ].name .label ("enforcement_action_name" ),
11291139 reference_models ["staff" ].id .label ("staff_id" ),
0 commit comments