Skip to content

Commit e21aade

Browse files
Merge pull request #122 from VineetBala-AOT/main
Fix full condition not being populated in an amendment
2 parents c40f2ac + 810e3ca commit e21aade

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

condition-api/src/condition_api/services/condition_service.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -265,26 +265,37 @@ def _build_amendment_subquery(project_id, document_id, aliases):
265265
def _populate_subconditions(conditions_map, cond_id):
266266
"""Populates sub conditions"""
267267
subcondition_map = {}
268+
top_level_subconditions = []
269+
270+
# First pass: create all subcondition objects
268271
for sub_row in ConditionService._fetch_subconditions(cond_id):
269272
# Handle subconditions
270273
subcond_id = sub_row.subcondition_id
271274
if subcond_id:
272-
subcondition = {
275+
subcondition_map[subcond_id] = {
273276
"subcondition_identifier": sub_row.subcondition_identifier,
274277
"subcondition_text": sub_row.subcondition_text,
275278
"sort_order": sub_row.sort_order,
276279
"subconditions": []
277280
}
278-
subcondition_map[subcond_id] = subcondition
279281

280-
# If the subcondition has a parent, append it to the parent's subcondition list
281-
if sub_row.parent_subcondition_id:
282-
parent = subcondition_map.get(sub_row.parent_subcondition_id)
282+
# Second pass: assign parent-child relationships
283+
for sub_row in ConditionService._fetch_subconditions(cond_id):
284+
subcond_id = sub_row.subcondition_id
285+
parent_id = sub_row.parent_subcondition_id
286+
287+
if subcond_id:
288+
subcondition = subcondition_map[subcond_id]
289+
if parent_id:
290+
parent = subcondition_map.get(parent_id)
283291
if parent:
284292
parent["subconditions"].append(subcondition)
285293
else:
286-
# Top-level subcondition for this condition
287-
conditions_map[cond_id]["subconditions"].append(subcondition)
294+
# No parent means top-level subcondition
295+
top_level_subconditions.append(subcondition)
296+
297+
# Attach top-level subconditions to the condition
298+
conditions_map[cond_id]["subconditions"] = top_level_subconditions
288299

289300
@staticmethod
290301
def _fetch_subconditions(cond_id):
@@ -296,7 +307,12 @@ def _fetch_subconditions(cond_id):
296307
subconditions.subcondition_text,
297308
subconditions.sort_order,
298309
subconditions.parent_subcondition_id
299-
).filter(subconditions.condition_id == cond_id).all()
310+
).filter(
311+
subconditions.condition_id == cond_id
312+
).order_by(
313+
subconditions.parent_subcondition_id.nullsfirst(), # ensure parents come first
314+
subconditions.sort_order
315+
).all()
300316
return results
301317

302318
@staticmethod

0 commit comments

Comments
 (0)