api/modules/database/schemas/relationships/curriculum_relationships.py
2025-07-11 13:52:19 +00:00

120 lines
5.3 KiB
Python

from typing import ClassVar
from modules.database.tools.neontology.baserelationship import BaseRelationship
import modules.database.schemas.nodes.schools.pastoral as pastoral_nodes
import modules.database.schemas.nodes.schools.curriculum as curriculum_nodes
import modules.database.schemas.nodes.structures.schools as school_structures
# Structure layer relationships
class CurriculumStructureIncludesKeyStage(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'CURRICULUM_STRUCTURE_INCLUDES_KEY_STAGE'
source: school_structures.CurriculumStructureNode
target: curriculum_nodes.KeyStageNode
class PastoralStructureIncludesYearGroup(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'PASTORAL_STRUCTURE_INCLUDES_YEAR_GROUP'
source: school_structures.PastoralStructureNode
target: pastoral_nodes.YearGroupNode
## Curriculum layer relationships
class SubjectForKeyStage(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'SUBJECT_FOR_KEY_STAGE'
source: curriculum_nodes.SubjectNode
target: curriculum_nodes.KeyStageNode
class SubjectHasYearGroupSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'SUBJECT_HAS_YEAR_GROUP_SYLLABUS'
source: curriculum_nodes.SubjectNode
target: pastoral_nodes.YearGroupSyllabusNode
class SubjectHasKeyStageSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'SUBJECT_HAS_KEY_STAGE_SYLLABUS'
source: curriculum_nodes.SubjectNode
target: curriculum_nodes.KeyStageSyllabusNode
class TopicPartOfYearGroupSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'YEAR_SYLLABUS_INCLUDES_TOPIC'
source: pastoral_nodes.YearGroupSyllabusNode
target: curriculum_nodes.TopicNode
class KeyStageSyllabusIncludesTopic(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_INCLUDES_TOPIC'
source: curriculum_nodes.KeyStageSyllabusNode
target: curriculum_nodes.TopicNode
class YearGroupHasYearGroupSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_HAS_YEAR_GROUP_SYLLABUS'
source: pastoral_nodes.YearGroupNode
target: pastoral_nodes.YearGroupSyllabusNode
class KeyStageSyllabusIncludesYearGroupSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_INCLUDES_YEAR_GROUP_SYLLABUS'
source: curriculum_nodes.KeyStageSyllabusNode
target: pastoral_nodes.YearGroupSyllabusNode
class KeyStageIncludesKeyStageSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_INCLUDES_KEY_STAGE_SYLLABUS'
source: curriculum_nodes.KeyStageNode
target: curriculum_nodes.KeyStageSyllabusNode
class KeyStageIncludesTopic(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_INCLUDES_TOPIC'
source: curriculum_nodes.KeyStageNode
target: curriculum_nodes.TopicNode
class SubjectIncludesTopic(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'SUBJECT_INCLUDES_TOPIC'
source: curriculum_nodes.SubjectNode
target: curriculum_nodes.TopicNode
class TopicIncludesTopicLesson(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'TOPIC_INCLUDES_LESSON'
source: curriculum_nodes.TopicNode
target: curriculum_nodes.TopicLessonNode
class TopicIncludesLearningStatement(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'TOPIC_INCLUDES_LEARNING_STATEMENT'
source: curriculum_nodes.TopicNode
target: curriculum_nodes.LearningStatementNode
class LessonIncludesLearningStatement(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'LESSON_INCLUDES_LEARNING_STATEMENT'
source: curriculum_nodes.TopicLessonNode
target: curriculum_nodes.LearningStatementNode
# Science-specific curriculum layer relationships
class TopicLessonIncludesScienceLab(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'LESSON_INCLUDES_SCIENCE_LAB'
source: curriculum_nodes.TopicLessonNode
target: curriculum_nodes.ScienceLabNode
class KeyStageFollowsKeyStage(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_FOLLOWS_KEY_STAGE'
source: curriculum_nodes.KeyStageNode
target: curriculum_nodes.KeyStageNode
class YearGroupFollowsYearGroup(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_FOLLOWS_YEAR_GROUP'
source: pastoral_nodes.YearGroupNode
target: pastoral_nodes.YearGroupNode
class KeyStageSyllabusFollowsKeyStageSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_FOLLOWS_KEY_STAGE_SYLLABUS'
source: curriculum_nodes.KeyStageSyllabusNode
target: curriculum_nodes.KeyStageSyllabusNode
class YearGroupSyllabusFollowsYearGroupSyllabus(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_SYLLABUS_FOLLOWS_YEAR_GROUP_SYLLABUS'
source: pastoral_nodes.YearGroupSyllabusNode
target: pastoral_nodes.YearGroupSyllabusNode
class TopicLessonFollowsTopicLesson(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'LESSON_FOLLOWS_LESSON'
source: curriculum_nodes.TopicLessonNode
target: curriculum_nodes.TopicLessonNode
class YearGroupSyllabusIncludesTopic(BaseRelationship):
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_SYLLABUS_INCLUDES_TOPIC'
source: pastoral_nodes.YearGroupSyllabusNode
target: curriculum_nodes.TopicNode