fix(nav): AcademicWeek children + days support in graph tree API
- AcademicWeek now returns has_children=true in both /calendar/academic endpoint and _get_children_for_node for AcademicTerm case - Added AcademicWeek case to _get_children_for_node: queries ACADEMIC_WEEK_HAS_ACADEMIC_DAY relationships to return AcademicDay children - Academic calendar can now expand weeks to show individual days Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
caeee6c9e4
commit
b42b409bb2
@ -489,6 +489,32 @@ def _get_children_for_node(
|
||||
logger.warning(f"AcademicYear children failed: {e}")
|
||||
return []
|
||||
|
||||
# AcademicWeek → days
|
||||
if node_type == "AcademicWeek" and neo4j_db_name:
|
||||
try:
|
||||
with driver_tools.get_session(database=neo4j_db_name) as session:
|
||||
result = session.run(
|
||||
"MATCH (w:AcademicWeek {uuid_string: })"
|
||||
"-[:ACADEMIC_WEEK_HAS_ACADEMIC_DAY]->(d:AcademicDay) "
|
||||
"RETURN d ORDER BY d.date",
|
||||
id=neo4j_node_id,
|
||||
)
|
||||
days = [
|
||||
{
|
||||
"neo4j_node_id": r["d"]["uuid_string"],
|
||||
"label": r["d"].get("date", ""),
|
||||
"node_type": "AcademicDay",
|
||||
"neo4j_db_name": neo4j_db_name,
|
||||
"is_section": False,
|
||||
"has_children": False,
|
||||
}
|
||||
for r in result
|
||||
]
|
||||
return days
|
||||
except Exception as e:
|
||||
logger.warning(f"AcademicWeek children failed: {e}")
|
||||
return []
|
||||
|
||||
# AcademicTerm → weeks
|
||||
if node_type == "AcademicTerm" and neo4j_db_name:
|
||||
try:
|
||||
@ -506,7 +532,7 @@ def _get_children_for_node(
|
||||
"node_type": "AcademicWeek",
|
||||
"neo4j_db_name": neo4j_db_name,
|
||||
"is_section": False,
|
||||
"has_children": False,
|
||||
"has_children": True,
|
||||
}
|
||||
for r in result
|
||||
]
|
||||
@ -622,7 +648,7 @@ async def get_academic_calendar(credentials: dict = Depends(SupabaseBearer())) -
|
||||
"node_type": "AcademicWeek",
|
||||
"neo4j_db_name": institute_db,
|
||||
"is_section": False,
|
||||
"has_children": False,
|
||||
"has_children": True,
|
||||
} for w in s2.run(
|
||||
"MATCH (t:AcademicTerm {uuid_string: $tid})-[:ACADEMIC_TERM_HAS_ACADEMIC_WEEK]->(w:AcademicWeek) "
|
||||
"RETURN w ORDER BY toInteger(w.academic_week_number)",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user