# cockpit_iteration_picker.dspy - Returns iterations as {value, text} for dropdown # Optional query param: project_id - filter iterations by project # Used by cockpit context bar iteration picker import json pid = (params_kw or {}).get('project_id', '') dbname = get_module_dbname('pipeline-sdlc') async with DBPools().sqlorContext(dbname) as sor: if pid: recs = await sor.sqlExe( "SELECT id, iteration_name FROM sd_iterations WHERE project_id=${pid}$ ORDER BY iteration_name", {"pid": pid} ) else: recs = await sor.sqlExe( "SELECT id, iteration_name FROM sd_iterations ORDER BY iteration_name", {} ) rows = [] for r in recs: rows.append({ 'value': r.id, 'text': r.iteration_name, }) return rows